{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "d021b529",
   "metadata": {},
   "source": [
    "# 5G NR PUSCH Tutorial\n",
    "\n",
    "This notebook provides an introduction to Sionna's [5G New Radio (NR) module](https://nvlabs.github.io/sionna/phy/api/nr.html) and, in particular, the [physical uplink shared channel (PUSCH)](https://nvlabs.github.io/sionna/phy/api/nr.html#pusch). This module provides implementations of a small subset of the physical layer functionalities as described in the 3GPP specifications [38.211](https://portal.3gpp.org/desktopmodules/Specifications/SpecificationDetails.aspx?specificationId=3213), [38.212](https://portal.3gpp.org/desktopmodules/Specifications/SpecificationDetails.aspx?specificationId=3214) and [38.214](https://portal.3gpp.org/desktopmodules/Specifications/SpecificationDetails.aspx?specificationId=3216). \n",
    "\n",
    "\n",
    "You will\n",
    "\n",
    "- Get an understanding of the different components of a PUSCH configuration, such as the carrier, DMRS, and transport block,\n",
    "- Learn how to rapidly simulate PUSCH transmissions for multiple transmitters,\n",
    "- Modify the PUSCHReceiver to use a custom MIMO Detector.\n",
    "\n",
    "## Table of Contents\n",
    "* [GPU Configuration and Imports](#GPU-Configuration-and-Imports)\n",
    "* [A \"Hello World!\" Example](#A-Hello-World-Example)\n",
    "* [Carrier Configuration](#Carrier-Configuration)\n",
    "* [Understanding the DMRS Configuration](#Understanding-the-DMRS-Configuration)\n",
    "    * [Configuring Multiple Layers](#Configuring-Multiple-Layers)\n",
    "    * [Controlling the Number of DMRS Symbols in a Slot](#Controlling-the-Number-of-DMRS-Symbols-in-a-Slot)\n",
    "    * [How to control the number of available DMRS ports?](#How-to-control-the-number-of-available-DMRS-ports?)\n",
    "* [Transport Blocks and MCS](#Transport-Blocks-and-MCS)\n",
    "* [Looking into the PUSCHTransmitter](#Looking-into-the-PUSCHTransmitter)\n",
    "* [Components of the PUSCHReceiver](#Components-of-the-PUSCHReceiver)\n",
    "* [End-to-end PUSCH Simulations](#End-to-end-PUSCH-Simulations)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e3174011",
   "metadata": {
    "tags": []
   },
   "source": [
    "## GPU Configuration and Imports"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "ea40a820-e6b6-4fa6-9eed-0a2eea001498",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-03-08T23:46:09.140606Z",
     "iopub.status.busy": "2025-03-08T23:46:09.139999Z",
     "iopub.status.idle": "2025-03-08T23:46:11.616747Z",
     "shell.execute_reply": "2025-03-08T23:46:11.615946Z"
    }
   },
   "outputs": [],
   "source": [
    "import os\n",
    "if os.getenv(\"CUDA_VISIBLE_DEVICES\") is None:\n",
    "    gpu_num = 0 # Use \"\" to use the CPU\n",
    "    os.environ[\"CUDA_VISIBLE_DEVICES\"] = f\"{gpu_num}\"\n",
    "os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'\n",
    "\n",
    "# Import Sionna\n",
    "try:\n",
    "    import sionna.phy\n",
    "except ImportError as e:\n",
    "    import sys\n",
    "    if 'google.colab' in sys.modules:\n",
    "       # Install Sionna in Google Colab\n",
    "       print(\"Installing Sionna and restarting the runtime. Please run the cell again.\")\n",
    "       os.system(\"pip install sionna\")\n",
    "       os.kill(os.getpid(), 5)\n",
    "    else:\n",
    "       raise e\n",
    "\n",
    "import tensorflow as tf\n",
    "# Configure the notebook to use only a single GPU and allocate only as much memory as needed\n",
    "# For more details, see https://www.tensorflow.org/guide/gpu\n",
    "gpus = tf.config.list_physical_devices('GPU')\n",
    "if gpus:\n",
    "    try:\n",
    "        tf.config.experimental.set_memory_growth(gpus[0], True)\n",
    "    except RuntimeError as e:\n",
    "        print(e)\n",
    "# Avoid warnings from TensorFlow\n",
    "tf.get_logger().setLevel('ERROR')\n",
    "\n",
    "sionna.phy.config.seed = 42 # Set seed for reproducible results\n",
    "\n",
    "# Load the required Sionna components\n",
    "from sionna.phy import Block\n",
    "from sionna.phy.nr import PUSCHConfig, PUSCHTransmitter, PUSCHReceiver\n",
    "from sionna.phy.channel import AWGN, RayleighBlockFading, OFDMChannel, \\\n",
    "                               TimeChannel, time_lag_discrete_time_channel\n",
    "from sionna.phy.channel import gen_single_sector_topology as gen_topology\n",
    "from sionna.phy.channel.tr38901 import AntennaArray, UMi, UMa, RMa\n",
    "from sionna.phy.utils import compute_ber, ebnodb2no, sim_ber\n",
    "from sionna.phy.ofdm import KBestDetector, LinearDetector\n",
    "from sionna.phy.mimo import StreamManagement"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "376e6700",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-03-08T23:46:11.620899Z",
     "iopub.status.busy": "2025-03-08T23:46:11.620484Z",
     "iopub.status.idle": "2025-03-08T23:46:11.631069Z",
     "shell.execute_reply": "2025-03-08T23:46:11.630190Z"
    }
   },
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import time"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "74cdcae8",
   "metadata": {
    "tags": []
   },
   "source": [
    "## A Hello World Example"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "70cfc8d3",
   "metadata": {},
   "source": [
    "Let us start with a simple \"Hello, World!\" example in which we will simulate PUSCH transmissions from a single transmitter to a single receiver over an AWGN channel."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "726ccf12",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-03-08T23:46:11.635130Z",
     "iopub.status.busy": "2025-03-08T23:46:11.634805Z",
     "iopub.status.idle": "2025-03-08T23:46:19.423061Z",
     "shell.execute_reply": "2025-03-08T23:46:19.422141Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BER: 0.0\n"
     ]
    }
   ],
   "source": [
    "# Create a PUSCH configuration with default settings\n",
    "pusch_config = PUSCHConfig()\n",
    "\n",
    "# Instantiate a PUSCHTransmitter from the PUSCHConfig\n",
    "pusch_transmitter = PUSCHTransmitter(pusch_config)\n",
    "\n",
    "# Create a PUSCHReceiver using the PUSCHTransmitter\n",
    "pusch_receiver = PUSCHReceiver(pusch_transmitter)\n",
    "\n",
    "# AWGN channel\n",
    "channel = AWGN()\n",
    "\n",
    "# Simulate transmissions over the AWGN channel\n",
    "batch_size = 16\n",
    "no = 0.1 # Noise variance\n",
    "\n",
    "x, b = pusch_transmitter(batch_size) # Generate transmit signal and info bits\n",
    "\n",
    "y = channel(x, no) # Simulate channel output\n",
    "\n",
    "b_hat = pusch_receiver(y, no) # Recover the info bits\n",
    "\n",
    "# Compute BER\n",
    "print(\"BER:\", compute_ber(b, b_hat).numpy())"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4e34c2f8",
   "metadata": {},
   "source": [
    "Although the above code snippet seems rather simple, you have actually carried out standard-compliant simulations of the NR PUSCH!\n",
    "\n",
    "To better understand what is actually going on under the hood, we can inspect the OFDM resource grid that is generated by the transmitter with the following command:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "71e70335",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-03-08T23:46:19.426915Z",
     "iopub.status.busy": "2025-03-08T23:46:19.426691Z",
     "iopub.status.idle": "2025-03-08T23:46:19.705287Z",
     "shell.execute_reply": "2025-03-08T23:46:19.704595Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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8ssvhqurK6cXAdwQpxdxW7h8+bIkydfX97rbZa3/9yfUpk2bprVr19otjvDx8bHr45+KFSum+++/X59//rkk6bPPPlOzZs1Uvnx5h2pIUnh4uEqWLKmyZcvq4Ycflre3t1asWKEyZcpIki5evKjvvvtOPXr00OXLl3X+/HmdP39eFy5cUPv27XXkyBHbpx2LFi2qAwcO6MiRIznWOn36tHbv3q2IiAgVL17cNl67dm21bdtWX3/9tcP9Z2ndurVq1Khhe52Zmally5apU6dOatCgQbbts04FLl68WC1btlSxYsVs7+38+fMKDw9XRkaGNm3adM2aWT/zrJ9Vln379qlkyZJ2y4ULF67bb04yMjK0evVqde3aVeXKlbONV69eXe3bt7/uvgAgcXoRt4msMJVT6Pmna4WzRo0a5fjHPrcSExNznDfL448/rieeeELHjx/XsmXL8nxd2bRp01SlShXFx8dr9uzZ2rRpkzw8PGzrf/vtNxmGoVGjRmnUqFE5znH27FmVLl1ar7/+urp06aIqVarorrvu0v33368nnnhCtWvXliT9+eefkqSqVatmm6N69epavXq1rly5Im9vb4ffx78/KXru3DklJCTc8Bq3I0eOaO/evdmu2fvne7uWrJ9N1s8qS1hYmC1kf/LJJ5o/f/4N+83JuXPndPXqVVWuXDnbuqpVq95USAVwZyB04bbg7++v4OBg7d2797rb7d27V6VLl5afn1++1t+/f7+kv/+A56Rz587y8PBQnz59lJKSoh49euSpzj/DYdeuXdWiRQs9/vjjOnz4sHx8fGwXk7/wwgvXPLqS1WOrVq109OhRLV++XGvWrNHHH3+syZMna8aMGde8t9i1XOvGnxkZGTmOe3l5OTR/lszMTLVt21YvvfRSjuurVKlyzX2rVasm6e+fVZcuXWzjPj4+Cg8Pl/T3dV/52S8AOILQhdtGx44dNXPmTG3evFktWrTItv6HH37QsWPH9OSTT+Zr3cTERC1dulRly5ZV9erVc9zGy8tLXbt21aeffqoOHTrk+iL963F1dVV0dLTuvfdevf/++xoxYoQqVqwoSXJ3d7cFiespXry4+vbtq759+yoxMVGtWrXS6NGjNWDAANvpz8OHD2fb79ChQypRooTtKFexYsUUFxeXbbuso2U3UrJkSfn5+dnC67VUqlRJiYmJuXpv/9ay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2o0HBgYqNjb2mnNGR0drzJgx+d0qAADATSmwI10nTpzQ0KFDtWDBAnl6eubbvCNHjlR8fLxtOXHiRL7NDQAAkFcFFrp27Nihs2fPql69enJzc5Obm5s2btyoqVOnys3NTYGBgUpNTVVcXJzdfmfOnFFQUNA15/Xw8JCfn5/dAgAAUNAK7PRimzZttG/fPruxvn37qlq1anr55ZdVtmxZubu7a/369erevbsk6fDhwzp+/LiaNm1aEC0DAADkWYGFLl9fX9111112Y97e3goICLCN9+/fX8OHD1fx4sXl5+enZ555Rk2bNlWTJk0KomUAAIA8K9AL6W9k8uTJcnFxUffu3ZWSkqL27dvrgw8+KOi2AAAAHHZLha4NGzbYvfb09NS0adM0bdq0gmkIAAAgnxT4fboAAADuBIQuAAAAExC6AAAATEDoAgAAMAGhCwAA3PLmzp2b7dGAtxtCFwAAhVBERIQsFossFovc3d0VGBiotm3bavbs2crMzMy2/a5du/TII48oMDBQnp6eqly5sgYOHKhff/21ALrPrmfPnrdML3lF6AIAoJC6//77dfr0aR07dkzffPON7r33Xg0dOlQdO3ZUenq6bbtVq1apSZMmSklJ0YIFC3Tw4EF9+umn8vf316hRo0zrNzU1NcfxtLQ0eXl5qVSpUjc1f1pa2k3tf7MIXQAAFFIeHh4KCgpS6dKlVa9ePb3yyitavny5vvnmG82dO1eSlJSUpL59++qBBx7QihUrFB4ertDQUDVu3Fhvv/22Pvzww2vOn5KSYnt0n4eHh8LCwjRr1ixJUkZGhvr376/Q0FB5eXmpatWqevfdd+32j4iIUNeuXTVu3DiFhISoatWqOnbsmCwWi7744gu1bt1anp6eWrBgQY6nF5cvX6569erJ09NTFStW1JgxY+zCpMVi0fTp09W5c2d5e3tr3Lhx+fONzaNb6uaoAADg+hISEuxee3h4yMPDI9f733fffapTp46++uorDRgwQKtXr9b58+f10ksv5bj99a6j6t27t2JiYjR16lTVqVNHf/zxh86fPy9JyszMVJkyZbR48WIFBATop59+0qBBgxQcHKwePXrY5li/fr38/Py0du1au7lHjBihSZMm6e6775anp6dWr15tt/6HH35Q7969NXXqVLVs2VJHjx7VoEGDJElRUVG27UaPHq3x48drypQpcnMr2NhD6AIA4DZStmxZu9dRUVEaPXq0Q3NUq1ZNe/fulSQdOXLENuaIX3/9VYsWLdLatWsVHh4uSapYsaJtvbu7u8aMGWN7HRoaqpiYGC1atMgudHl7e+vjjz+W1WqVJB07dkySNGzYMHXr1u2a9ceMGaMRI0aoT58+ttpjx47VSy+9ZBe6Hn/8cfXt29eh9+YshC4AAG4jJ06ckJ+fn+21I0e5shiGIYvFYvs6L3bv3i1XV1e1bt36mttMmzZNs2fP1vHjx3X16lWlpqaqbt26dtvUqlXLFrj+qUGDBtetv2fPHv344492pwwzMjKUnJyspKQkFSlSJFfzmInQBQDAbcTPz88udOXFwYMHFRoaKkmqUqWKJOnQoUNq2rRprufw8vK67vqFCxfqhRde0KRJk9S0aVP5+vpq4sSJ2rp1q9123t7eOe5/rfEsiYmJGjNmTI5Hwzw9PXM9j5kIXQAA3EG+++477du3T88995wkqV27dipRooTeeustLV26NNv2cXFxOV7XVatWLWVmZmrjxo2204v/9OOPP6pZs2YaPHiwbezo0aP59j7q1aunw4cPKywsLN/mdDZCFwAAhVRKSopiY2OVkZGhM2fO6Ntvv1V0dLQ6duyo3r17S/r/11Q98sgj6ty5s5599lmFhYXp/PnzWrRokY4fP66FCxdmm7tChQrq06eP+vXrZ7uQ/s8//9TZs2fVo0cPVa5cWZ988olWr16t0NBQzZ8/X9u2bbMdYbtZr732mjp27Khy5crp4YcflouLi/bs2aP9+/frjTfeyJca+Y1bRgAAUEh9++23Cg4OVoUKFXT//ffr+++/19SpU7V8+XK5urratuvSpYt++uknubu76/HHH1e1atX02GOPKT4+/roBZvr06Xr44Yc1ePBgVatWTQMHDtSVK1ckSU8++aS6deumnj17qnHjxrpw4YLdUa+b1b59e61atUpr1qxRw4YN1aRJE02ePFnly5fPtxr5zWLk9Qq620RCQoL8/f3V2NpGbpbCe2AvvnsTU+v5f7nF1HoAYIZ0I11bU9crPj7+pq+bupasv0vnfmkmP9/c/11KuJyukjV+cmpvcC6OdAEAAJiA0AUAAGACQhcAAIAJCF0AAAAmIHQBAACYgNAFAABgAkIXAACACQhdAAAAJiB0AQAAmIDQBQAAYAJCFwAAgAkIXQAAACYgdAEAAJiA0AUAAGACQhcAAIAJCF0AAAAmIHQBAACYgNAFAABgAkIXAACACQhdAAAAJiB0AQAAmIDQBQAAYAJCFwAAgAkIXQAAACYgdAEAAJiA0AUAAGACQhcAAIAJCF0AAAAmIHQBAACYgNAFAABgAreCbgAAgDtR62215VrEI9fbZySlSPpJDRs2lKurqyIjIxUZGem8BpHvCF0AANxGtm3bJj8/v4JuA3nA6UUAAAATELoAAABMQOgCAAAwAaELAADABIQuAAAAExC6AAAATEDoAgAAMAGhCwAAwASELgAAABMQugAAAExA6AIAADABoQsAAMAEhC4AAAATELoAAABMQOgCAAAwAaELAADABA6HrtGjRyszMzPbeHx8vB577LF8aQoAAKCwcTh0zZo1Sy1atNDvv/9uG9uwYYNq1aqlo0eP5mtzAAAAhYXDoWvv3r0qU6aM6tatq5kzZ+rFF19Uu3bt9MQTT+inn35yaK7p06erdu3a8vPzk5+fn5o2bapvvvnGtj45OVmRkZEKCAiQj4+PunfvrjNnzjjaMgAAQIFzc3SHYsWKadGiRXrllVf05JNPys3NTd98843atGnjcPEyZcpo/Pjxqly5sgzD0Lx589SlSxft2rVLNWvW1HPPPaf//e9/Wrx4sfz9/TVkyBB169ZNP/74o8O1AAAAClKeLqR/77339O677+qxxx5TxYoV9eyzz2rPnj0Oz9OpUyc98MADqly5sqpUqaJx48bJx8dHW7ZsUXx8vGbNmqV33nlH9913n+rXr685c+bop59+0pYtW/LSNgAAQIFxOHTdf//9GjNmjObNm6cFCxZo165datWqlZo0aaK33norz41kZGRo4cKFunLlipo2baodO3YoLS1N4eHhtm2qVaumcuXKKSYm5przpKSkKCEhwW4BAAAoaA6HroyMDO3du1cPP/ywJMnLy0vTp0/XkiVLNHnyZIcb2Ldvn3x8fOTh4aGnnnpKS5cuVY0aNRQbGyur1aqiRYvabR8YGKjY2NhrzhcdHS1/f3/bUrZsWYd7AgAAyG8Oh661a9cqJCQk2/iDDz6offv2OdxA1apVtXv3bm3dulVPP/20+vTpo19++cXhebKMHDlS8fHxtuXEiRN5ngsAACC/5Omarh9++EH/+c9/1LRpU508eVKSNH/+fB06dMjhuaxWq8LCwlS/fn1F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Pc/cuXNVtGhR5zV6BynQ0JWYmKjdu3dr9+7dkv6+eH737t06fvy4LBaLhg0bpjfeeEMrVqzQvn371Lt3b4WEhKhr164F2TYAALeF+++/X6dPn9axY8f0zTff6N5779XQoUPVsWNHpaenF3R7d5wCDV3bt2/X3XffrbvvvluSNHz4cN1999167bXXJEkvvfSSnnnmGQ0aNEgNGzZUYmKivv32W3l6ehZk2wAA3BY8PDwUFBSk0qVLq169enrllVe0fPlyffPNN5o7d64k6Z133lGtWrXk7e2tsmXLavDgwUpMTJQkbdiwQX379lV8fLztqNno0aMlSfPnz1eDBg3k6+uroKAgPf744zp79mwBvdPbQ4GGrnvuuUeGYWRbsv5DsFgsev311xUbG6vk5GStW7dOVapUKciWAQAoUP++LVJKSopD+993332qU6eOvvrqK0mSi4uLpk6dqgMHDmjevHn67rvv9NJLL0mSmjVrpilTpsjPz0+nT5/W6dOn9cILL0iS0tLSNHbsWO3Zs0fLli3TsWPHFBERka/vtbAp0JujAgAAx/z7VkhRUVG2o0+5Va1aNe3du1eSNGzYMNt4hQoV9MYbb+ipp57SBx98IKvVKn9/f1kslmwfYuvXr5/t64oVK2rq1Km2s1I+Pj6Ovak7BKELAIDbyIkTJ+w+me/h4eHwHIZhyGKxSJLWrVun6OhoHTp0SAkJCUpPT1dycrKSkpJUpEiRa86xY8cOjR49Wnv27NGlS5dsF+cfP35cNWrUcLinO8Et++lFAACQ3b9vi5SX0HXw4EGFhobq2LFj6tixo2rXrq0vv/xSO3bssD0POTU19Zr7X7lyRe3bt5efn58WLFigbdu2aenSpTfc707HkS4AAO4g3333nfbt26fnnntOO3bsUGZmpiZNmiQXl7+PwyxatMhue6vVqoyMDLuxQ4cO6cKFCxo/frztdOf27dvNeQO3MY50AQBQSKWkpCg2NlYnT57Uzp079eabb6pLly7q2LGjevfurbCwMKWlpem9997T77//rvnz52vGjBl2c1SoUEGJiYlav369zp8/r6SkJJUrV05Wq9W234oVKzR27NgCepe3D0IXAACF1Lfffqvg4GBVqFBB999/v77//ntNnTpVy5cvl6urq+rUqaN33nlHEyZM0F133aUFCxYoOjrabo5mzZrpqaeeUs+ePVWyZEm99dZbKlmypObOnavFixerRo0aGj9+vN5+++0Cepe3D4thGEZBN+FMCQkJ8vf3V2NrG7lZCu/Z1PjuTUyt5//lFlPrAYAZ0o10bU1dr/j4eKc9Ri7r71ITj3CH/i6lG+nakrLOqb3BuTjSBQAAYAJCFwAAgAkIXQAAACYgdAEAAJiA0AUAAGACQhcAAIAJCF0AAAAmIHQBAACYgNAFAABgAkIXAACACQhdAAAAJiB0AQAAmIDQBQAAYAJCFwAAgAkIXQAAACYgdAEAAJiA0AUAAGACQhcAAIAJCF0AAAAmIHQBAACYgNAFAABgAkIXAACACQhdAAAAJiB0AQAAmIDQBQAAYAJCFwAAgAkIXQAAACYgdAEAAJiA0AUAAGACt4JuAACAO1GG0iXDwe1xWyN0AQBgIqvVqqCgIG2L3eDwvn5+fmrUqJFcXFwUGRmpyMjI/G8QTkPoAgDARJ6envrjjz+Umprq8L5Wq1Wenp5O6ApmIHQBAGAyT09PwtMdiAvpAQAATEDoAgAAMAGhCwAAwASELgAAABMQugAAAExA6AIAADABoQsAAMAEhC4AAAATELoAAABMQOgCAAAwAaELAADABIQuAAAAExC6AAAATEDoAgAAMAGhCwAAwASELgAAABMQugAAAExA6AIAADABoQsAAMAEhC4AAAATELoAAABMQOgCAAAwAaELAADABIQuAAAAExC6AAAATEDoAgAAMMFtEbqmTZumChUqyNPTU40bN9bPP/9c0C0BAAA45JYPXV988YWGDx+uqKgo7dy5U3Xq1FH79u119uzZgm4NAAAg12750PXOO+9o4MCB6tu3r2rUqKEZM2aoSJEimj17dkG3BgAAkGu3dOhKTU3Vjh07FB4ebhtzcXFReHi4YmJictwnJSVFCQkJdgsAAEBBu6VD1/nz55WRkaHAwEC78cDAQMXGxua4T3R0tPz9/W1L2bJlzWgVAADgum7p0JUXI0eOVHx8vG05ceJEQbcEAAAgt4Ju4HpKlCghV1dXnTlzxm78zJkzCgoKynEfDw8PeXh4mNEeAABArt3Soctqtap+/fpav369unbtKknKzMzU+vXrNWTIkFzNYRiGJCndSHdWm7eEjLQUU+sV9u8ngDtT1u+2rL8dQH66pUOXJA0fPlx9+vRRgwYN1KhRI02ZMkVXrlxR3759c7X/5cuXJUk70jY6s82Ct3h9QXcAAIXG5cuX5e/vX9BtoJC55UNXz549de7cOb322muKjY1V3bp19e2332a7uP5aQkJCdOLECfn6+spiseS6bkJCgsqWLasTJ07Iz88vr+3fsvUKomZhr1cQNQt7vYKoyXu8/evdTE3DMHT58mWFhIQ4sTvcqW750CVJQ4YMyfXpxH9zcXFRmTJl8lzbz8/PtF8SBVGvIGoW9noFUbOw1yuImrzH279eXmtyhAvOUug+vQgAAHArInQBAACYgNB1DR4eHoqKijLt9hNm1yuImoW9XkHULOz1CqIm7/H2r1dQNYEbsRh8LhYAAMDpONIFAABgAkIXAACACQhdAAAAJiB0AQAAmIDQdQ3Tpk1ThQoV5OnpqcaNG+vnn392Wq1NmzapU6dOCgkJkcVi0bJly5xWKzo6Wg0bNpSvr69KlSqlrl276vDhw06rJ0nTp09X7dq1bTcpbNq0qb755hun1vyn8ePHy2KxaNiwYU6Zf/To0bJYLHZLtWrVnFLrn06ePKn//Oc/CggIkJeXl2rVqqXt27c7pVaFChWyvUeLxaLIyEin1MvIyNCoUaMUGhoqLy8vVapUSWPHjnX68/AuX76sYcOGqXz58vLy8lKzZs20bdu2fJn7Rv/ODcPQa6+9puDgYHl5eSk8PFxHjhxxas2vvvpK7dq1U0BAgCwWi3bv3u20emlpaXr55ZdVq1YteXt7KyQkRL1799apU6ecUk/6+99mtWrV5O3trWLFiik8PFxbt27Ncz3gZhG6cvDFF19o+PDhioqK0s6dO1WnTh21b99eZ8+edUq9K1euqE6dOpo2bZpT5v+njRs3KjIyUlu2bNHatWuVlpamdu3a6cqVK06rWaZMGY0fP147duzQ9u3bdd9996lLly46cOCA02pm2bZtmz788EPVrl3bqXVq1qyp06dP25bNmzc7td6lS5fUvHlzubu765tvvtEvv/yiSZMmqVixYk6pt23bNrv3t3btWknSI4884pR6EyZM0PTp0/X+++/r4MGDmjBhgt566y299957TqmXZcCAAVq7dq3mz5+vffv2qV27dgoPD9fJkydveu4b/Tt/6623NHXqVM2YMUNbt26Vt7e32rdvr+TkZKfVvHLlilq0aKEJEybkuUZu6yUlJWnnzp0aNWqUdu7cqa+++kqHDx9W586dnVJPkqpUqaL3339f+/bt0+bNm1WhQgW1a9dO586dy3NN4KYYyKZRo0ZGZGSk7XVGRoYREhJiREdHO722JGPp0qVOr5Pl7NmzhiRj48aNptU0DMMoVqyY8fHHHzu1xuXLl43KlSsba9euNVq3bm0MHTrUKXWioqKMOnXqOGXua3n55ZeNFi1amFrzn4YOHWpUqlTJyMzMdMr8Dz74oNGvXz+7sW7duhm9evVySj3DMIykpCTD1dXVWLVqld14vXr1jFdffTVfa/3733lmZqYRFBRkTJw40TYWFxdneHh4GJ9//rlTav7TH3/8YUgydu3alS+1blQvy88//2xIMv78809T6sXHxxuSjHXr1t10PSAvONL1L6mpqdqxY4fCw8NtYy4uLgoPD1dMTEwBduYc8fHxkqTixYubUi8jI0MLFy7UlStX1LRpU6fWioyM1IMPPmj3s3SWI0eOKCQkRBUrVlSvXr10/Phxp9ZbsWKFGjRooEceeUSlSpXS3XffrZkzZzq1ZpbU1FR9+umn6tevn0MPkXdEs2bNtH79ev3666+SpD179mjz5s3q0KGDU+pJUnp6ujIyMuTp6Wk37uXl5fQjl3/88YdiY2Pt/lv19/dX48aNC+XvnSzx8fGyWCwqWrSo02ulpqbqo48+kr+/v+rUqeP0ekBObosHXpvp/PnzysjIUGBgoN14YGCgDh06VEBdOUdmZqaGDRum5s2b66677nJqrX379qlp06ZKTk6Wj4+Pli5dqho1ajit3sKFC7Vz5858ux7neho3bqy5c+eqatWqOn36tMaMGaOWLVtq//798vX1dUrN33//XdOnT9fw4cP1yiuvaNu2bXr22WdltVrVp08fp9TMsmzZMsXFxSkiIsJpNUaMGKGEhARVq1ZNrq6uysjI0Lhx49SrVy+n1fT19VXTpk01duxYVa9eXYGBgfr8888VExOjsLAwp9WVpNjYWEnK8fdO1rrCJjk5WS+//LIee+wxpz4Ee9WqVXr00UeVlJSk4OBgrV27ViVKlHBaPeB6CF13sMjISO3fv9/p/xcvSVWrVtXu3bsVHx+vJUuWqE+fPtq4caNTgteJEyc0dOhQrV27NttRC2f459GX2rVrq3HjxipfvrwWLVqk/v37O6VmZmamGjRooDfffFOSdPfdd2v//v2aMWOG00PXrFmz1KFDB4WEhDitxqJFi7RgwQJ99tlnqlmzpnbv3q1hw4YpJCTEqe9v/vz56tevn0qXLi1XV1fVq1dPjz32mHbs2OG0mneitLQ09ejRQ4ZhaPr06U6tde+992r37t06f/68Zs6cqR49emjr1q0qVaqUU+sCOeH04r+UKFFCrq6uOnPmjN34mTNnFBQUVEBd5b8hQ4Zo1apV+v7771WmTBmn17NarQoLC1P9+vUVHR2tOnXq6N1333VKrR07dujs2bOqV6+e3Nzc5Obmpo0bN2rq1Klyc3NTRkaGU+pmKVq0qKpUqaLffvvNaTWCg4OzBdbq1as7/bTmn3/+qXXr1mnAgAFOrfPiiy9qxIgRevTRR1WrVi098cQTeu655xQdHe3UupUqVdLGjRuVmJioEydO6Oeff1ZaWpoqVqzo1LpZv1sK++8d6f8Hrj///FNr16516lEuSfL29lZYWJiaNGmiWbNmyc3NTbNmzXJqTeBaCF3/YrVaVb9+fa1fv942lpmZqfXr1zv9GiQzGIahIUOGaOnSpfruu+8UGhpaIH1kZmYqJSXFKXO3adNG+/bt0+7du21LgwYN1KtXL+3evVuurq5OqZslMTFRR48eVXBwsNNqNG/ePNutPn799VeVL1/eaTUlac6cOSpVqpQefPBBp9ZJSkqSi4v9rydXV1dlZmY6tW4Wb29vBQcH69KlS1q9erW6dOni1HqhoaEKCgqy+72TkJCgrVu3ForfO1myAteRI0e0bt06BQQEmN6DM3/3ADfC6cUcDB8+XH369FGDBg3UqFEjTZkyRVeuXFHfvn2dUi8xMdHuqMgff/yh3bt3q3jx4ipXrly+1oqMjNRnn32m5cuXy9fX13a9iL+/v7y8vPK1VpaRI0eqQ4cOKleunC5fvqzPPvtMGzZs0OrVq51Sz9fXN9s1at7e3goICHDKtWsvvPCCOnXqpPLly+vUqVOKioqSq6urHnvssXyvleW5555Ts2bN9Oabb6pHjx76+eef9dFHH+mjjz5yWs3MzEzNmTNHffr0kZubc391dOrUSePGjVO5cuVUs2ZN7dq1S++884769evn1LqrV6+WYRiqWrWqfvvtN7344ouqVq1avvzbv9G/82HDhumNN95Q5cqVFRoaqlGjRikkJERdu3Z1Ws2LFy/q+PHjtntlZQX5oKCgPB1hu1694OBgPfzww9q5c6dWrVqljIwM2++f4sWLy2q15mu9gIAAjRs3Tp07d1ZwcLDOnz+vadOm6eTJk0671QlwQwX86clb1nvvvWeUK1fOsFqtRqNGjYwtW7Y4rdb3339vSMq29OnTJ99r5VRHkjFnzpx8r5WlX79+Rvny5Q2r1WqULFnSaNOmjbFmzRqn1cuJM28Z0bNnTyM4ONiwWq1G6dKljZ49exq//fabU2r908qVK4277rrL8PDwMKpVq2Z89NFHTq23evVqQ5Jx+PBhp9YxDMNISEgwhg4dapQrV87w9PQ0KlasaLz66qtGSkqKU+t+8cUXRsWKFQ2r1WoEBQUZkZGRRlxcXL7MfaN/55mZmcaoUaOMwMBAw8PDw2jTps1Nf69vVHPOnDk5ro+Kisr3elm3pchp+f777/O93tWrV42HHnrICAkJMaxWqxEcHGx07tzZ+Pnnn/NUC8gPFsNw8i2eAQAAwDVdAAAAZiB0AQAAmIDQBQAAYAJCFwAAgAkIXQAAACYgdAEAAJiA0AUAAGACQhcAU2zYsEEWi0VxcXE3NU+FChU0ZcqUfOkJAMxE6AJuwokTJ9SvXz+FhITIarWqfPnyGjp0qC5cuGC33T333COLxZJtSU9Pz7bew8NDpUuXVqdOnfTVV19lq5m13ZYtW+zGU1JSFBAQIIvFog0bNlyz53Pnzunpp59WuXLl5OHhoaCgILVv314//vjjzX9DAADXROgC8uj3339XgwYNdOTIEX3++ef67bffNGPGDNvD0S9evGi3/cCBA3X69Gm75Z/PMMxaf/ToUX355ZeqUaOGHn30UQ0aNChb7bJly2rOnDl2Y0uXLpWPj88N++7evbt27dqlefPm6ddff9WKFSt0zz33ZAuKAID8RegC8igyMlJWq1Vr1qxR69atVa5cOXXo0EHr1q3TyZMn9eqrr9ptX6RIEduDhHN6oHDW+jJlyqhJkyaaMGGCPvzwQ82cOVPr1q2z27ZPnz5auHChrl69ahubPXu2+vTpc92e4+Li9MMPP2jChAm69957Vb58eTVq1EgjR45U586dJUn9+vVTx44d7fZLS0tTqVKlNGvWLEl/H5l75plnNGzYMBUrVkyBgYGaOXOm7cHwvr6+CgsL0zfffJOthx9//FG1a9eWp6enmjRpov3799ut//LLL1WzZk15eHioQoUKmjRp0nXfEwDcLghdQB5cvHhRq1ev1uDBg+Xl5WW3LigoSL169dIXX3yhm320aZ8+fVSsWLFspxnr16+vChUq6Msvv5QkHT9+XJs2bdITTzxx3fl8fHzk4+OjZcuWKSUlJcdtBgwYoG+//VanT5+2ja1atUpJSUnq2bOnbWzevHkqUaKEfv75Zz3zzDN6+umn9cgjj6hZs2bauXOn2rVrpyeeeEJJSUl287/44ouaNGmStm3bppIlS6pTp05KS0uTJO3YsUM9evTQo48+qn379mn06NEaNWqU5s6dm+vvGQDcqghdQB4cOXJEhmGoevXqOa6vXr26Ll26pHPnztnGPvjgA1vo8fHx0fPPP3/DOi4uLqpSpYqOHTuWbV2/fv00e/ZsSdLcuXP1wAMPqGTJktedz83NTXPnztW8efNUtGhRNW/eXK+88or27t1r26ZZs2aqWrWq5s+fbxubM2eOHnnkEbvTl3Xq1NF///tfVa5cWSNHjpSnp6dKlCihgQMHqnLlynrttdd04cIFu7klKSoqSm3btlWtWrU0b948nTlzRkuXLpUkvfPOO2rTpo1GjRqlKlWqKCIiQkOGDNHEiRNv+L0CgFsdoQu4CY4cyerVq5d2795tW0aOHJnrGhaLJdv4f/7zH8XExOj333/X3Llz1a9fv1zN1717d506dUorVqzQ/fffrw0bNqhevXp2R5MGDBhgu2bszJkz+uabb7LNX7t2bdvXrq6uCggIUK1atWxjgYGBkqSzZ8/a7de0aVPb18WLF1fVqlV18OBBSdLBgwfVvHlzu+2bN2+uI0eOKCMjI1fvDwBuVYQuIA/CwsJksVhsYeHfDh48qGLFitkdefL391dYWJhtKVGixA3rZGRk6MiRIwoNDc22LiAgQB07dlT//v2VnJysDh065Lp/T09PtW3bVqNGjdJPP/2kiIgIRUVF2db37t1bv//+u2JiYvTpp58qNDRULVu2tJvD3d3d7rXFYrEbywqKmZmZue4LAAozQheQBwEBAWrbtq0++OADu4vZJSk2NlYLFixQz549czxC5Yh58+bp0qVL6t69e47r+/Xrpw0bNqh3795ydXXNc50aNWroypUrttcBAQHq2rWr5syZo7lz56pv3755nvvf/nmri0uXLunXX3+1naatXr16tltX/Pjjj6pSpcpNvT8AuBW43XgTADl5//331axZM7Vv315vvPGGQkNDdeDAAb344osqXbq0xo0b59B8SUlJio2NVXp6uv766y8tXbpUkydP1tNPP6177703x33uv/9+nTt3Tn5+frmqceHCBT3yyCPq16+fateuLV9fX23fvl1vvfWWunTpYrftgAED1LFjR2VkZNzwU5GOeP311xUQEKDAwEC9+uqrKlGihLp27SpJev7559WwYUONHTtWPXv2VExMjN5//3198MEH+VYfAAoKoQvIo8qVK2v79u2KiopSjx49dPHiRQUFBalr166KiopS8eLFHZpv5syZmjlzpqxWqwICAlS/fn198cUXeuihh665j8ViydVpyiw+Pj5q3LixJk+erKNHjyotLU1ly5bVwIED9corr9htGx4eruDgYNWsWVMhISEOvZfrGT9+vIYOHaojR46obt26WrlypaxWqySpXr16WrRokV577TWNHTtWwcHBev311xUREZFv9QGgoFiMm/1MO4BCKTExUaVLl9acOXPUrVu3gm4HAG57HOkCYCczM1Pnz5/XpEmTVLRoUdtNUwEAN4fQBcDO8ePHFRoaqjJlymju3Ll2jyoCAOQdpxcBAABMwC0jAAAATEDoAgAAMAGhCwAAwASELgAAABMQugAAAExA6AIAADABoQsAAMAEhC4AAAATELoAAABM8P8ABc1gc0qXjCwAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "pusch_transmitter.resource_grid.show();"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "812933e2",
   "metadata": {},
   "source": [
    "The above figure tells us that we are simulating a slot of 14 OFDM symbols spanning 48 subcarriers, which correspond to four physical resource blocks (PRBs) in 5G terminology. The third OFDM symbol is reserved for pilot transmissions, so-called demodulation reference signals (DMRS), and the rest is used for data. "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3bad481f",
   "metadata": {},
   "source": [
    "## Carrier Configuration\n",
    "\n",
    "When you create a PUSCHConfig instance, it automatically creates a CarrierConfig instance with default settings.\n",
    "You can inspect this configuration with the following command:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "7c010bd8",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-03-08T23:46:19.709219Z",
     "iopub.status.busy": "2025-03-08T23:46:19.709004Z",
     "iopub.status.idle": "2025-03-08T23:46:19.713653Z",
     "shell.execute_reply": "2025-03-08T23:46:19.712970Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Carrier Configuration\n",
      "=====================\n",
      "cyclic_prefix : normal\n",
      "cyclic_prefix_length : 5.208333333333334e-06\n",
      "frame_duration : 0.01\n",
      "frame_number : 0\n",
      "kappa : 64.0\n",
      "mu : 0\n",
      "n_cell_id : 1\n",
      "n_size_grid : 4\n",
      "n_start_grid : 0\n",
      "num_slots_per_frame : 10\n",
      "num_slots_per_subframe : 1\n",
      "num_symbols_per_slot : 14\n",
      "slot_number : 0\n",
      "sub_frame_duration : 0.001\n",
      "subcarrier_spacing : 15\n",
      "t_c : 5.086263020833334e-10\n",
      "t_s : 3.2552083333333335e-08\n",
      "\r\n"
     ]
    }
   ],
   "source": [
    "pusch_config.carrier.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "443ffd6a",
   "metadata": {},
   "source": [
    "Most of these parameters cannot be controlled as they are simply derived from others. For example, the cyclic prefix length depends on the subcarrier spacing.\n",
    "Let us see what happens, when we choose larger subcarrier spacing:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "c8ca703b",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-03-08T23:46:19.716610Z",
     "iopub.status.busy": "2025-03-08T23:46:19.716264Z",
     "iopub.status.idle": "2025-03-08T23:46:19.720804Z",
     "shell.execute_reply": "2025-03-08T23:46:19.720068Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Carrier Configuration\n",
      "=====================\n",
      "cyclic_prefix : normal\n",
      "cyclic_prefix_length : 1.6927083333333335e-06\n",
      "frame_duration : 0.01\n",
      "frame_number : 0\n",
      "kappa : 64.0\n",
      "mu : 2\n",
      "n_cell_id : 1\n",
      "n_size_grid : 4\n",
      "n_start_grid : 0\n",
      "num_slots_per_frame : 40\n",
      "num_slots_per_subframe : 4\n",
      "num_symbols_per_slot : 14\n",
      "slot_number : 0\n",
      "sub_frame_duration : 0.001\n",
      "subcarrier_spacing : 60\n",
      "t_c : 5.086263020833334e-10\n",
      "t_s : 3.2552083333333335e-08\n",
      "\r\n"
     ]
    }
   ],
   "source": [
    "pusch_config.carrier.subcarrier_spacing = 60\n",
    "pusch_config.carrier.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1bd7dfcb",
   "metadata": {},
   "source": [
    "The cyclic prefix has shrunk from $5.2 \\mu s$ to $1.69 \\mu s$ and the number of slots per frame has increased from $10$ to $40$.\n",
    "\n",
    "If we change to the extended cyclic prefix, the number of OFDM symbols per slot will decrease from 14 to 12."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "3316b591",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-03-08T23:46:19.723718Z",
     "iopub.status.busy": "2025-03-08T23:46:19.723324Z",
     "iopub.status.idle": "2025-03-08T23:46:19.728273Z",
     "shell.execute_reply": "2025-03-08T23:46:19.727464Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Carrier Configuration\n",
      "=====================\n",
      "cyclic_prefix : extended\n",
      "cyclic_prefix_length : 4.166666666666667e-06\n",
      "frame_duration : 0.01\n",
      "frame_number : 0\n",
      "kappa : 64.0\n",
      "mu : 2\n",
      "n_cell_id : 1\n",
      "n_size_grid : 4\n",
      "n_start_grid : 0\n",
      "num_slots_per_frame : 40\n",
      "num_slots_per_subframe : 4\n",
      "num_symbols_per_slot : 12\n",
      "slot_number : 0\n",
      "sub_frame_duration : 0.001\n",
      "subcarrier_spacing : 60\n",
      "t_c : 5.086263020833334e-10\n",
      "t_s : 3.2552083333333335e-08\n",
      "\r\n"
     ]
    }
   ],
   "source": [
    "pusch_config_ext = pusch_config.clone()\n",
    "pusch_config_ext.carrier.cyclic_prefix = \"extended\"\n",
    "pusch_config_ext.carrier.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9e1803b5",
   "metadata": {},
   "source": [
    "Please have a look at the API documentation of [PUSCHCarrierConfig](https://nvlabs.github.io/sionna/phy/api/nr.html#sionna.phy.nr.PUSCHConfig) for more detail."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "390851a7",
   "metadata": {},
   "source": [
    "## Understanding the DMRS Configuration\n",
    "\n",
    "We can learn more about the structure of the resoure grid by having a look at the pilot pattern in the next section."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "541d253b",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-03-08T23:46:19.731365Z",
     "iopub.status.busy": "2025-03-08T23:46:19.731065Z",
     "iopub.status.idle": "2025-03-08T23:46:20.017426Z",
     "shell.execute_reply": "2025-03-08T23:46:20.016763Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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fe3YsUPLli3Tr7/+qpiYGC1cuFBPPvnkHfcNDg7WqVOncozfGAsJCbnlvsOGDbN5Rk+LFi2sF+Xeia+vr9q0aaM2bdqoSJEimjdvnrZs2aIWLVrccd+bBYHs7GzVqFFDU6ZMuek+N0LJkSNH1Lp1a1WuXFlTpkxRaGio3N3d9Z///EdTp07NcU2Nq6vrTY93q3HjDk++CA4O1tq1a2UYhiwWi3U8N99vAOZByAFyISUlRbGxserSpYu6dOmi7OxszZs3TyNGjFCHDh1sZiVupnbt2tqwYYOys7NtLj7esmWLihYtqgcffPCW+7766qt66qmnrF+XKFEiT5+hXr16mjdvnvUP/V//+OfWAw88oF27dql169a33X/lypXKyMjQihUrbGZp/no6y5Fq166tf/7zn9q3b5+qVq1qHd+yZYt1PQDz45ocIBeGDBkiwzD0wQcfSJJcXFw0e/ZsnTt3znpr9e089thjOn36tJYsWWIdO3funD777DN16tTppteP3FC1alVFRUVZl8jIyFtue+XKlVveHr1q1SpJUqVKlSTJ+vDCixcv3rH/G3r06KFff/1V8fHxOdb98ccfunz5sqT/n4H564xLWlqaEhIScl3rbnTp0kVFihTRzJkzrWOGYWj27NkqU6aMmjRp4pQ+ABQsZnKAO1i6dKmWL19uvQ36hjp16igmJkYffvih+vbta33uzM089thjatSokfr166e9e/dan3iclZWlN998M996vXLlipo0aaJGjRqpXbt2Cg0N1cWLF7Vs2TJt2LBBXbt2VZ06dST9OStTvHhxzZ49Wz4+PvL29lbDhg0VERFxy+M//fTTWrx4sZ5//nmtXbtWTZs2VVZWlvbv36/Fixdr9erVqlevntq2bSt3d3d16tRJzz33nC5duqT4+HiVLl36pqft8lvZsmU1fPhwvffee8rMzFT9+vWt34MFCxbc8jQYAJMp0Hu7gELiVreQ//7770bZsmWN2rVr3/Qpuenp6UZISIhRt27dOz5F9/z588aAAQMMf39/o2jRokaLFi2MrVu35ttnMIw/n3gcHx9vdO3a1QgPDzc8PDyMokWLGnXq1DHee+89IyMjw2b75cuXG1WrVjXc3Nxsbidv0aKFUa1atZvWuHbtmjFx4kSjWrVqhoeHh1GiRAkjMjLSePPNN420tDTrditWrDBq1qxpeHp6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Y8eOatu2rc0xXnrpJXl4eGjz5s02x9+1a5d2795tcwrKMAxlZ2fr2LFjOnjwoNzc3BQZGWldX7ly5RzX6OZGoXkY4M1MnTpVLi4u6t69u83DAAEAwJ9SUlJsLs243SzODf3797eeHpoxY0aO9Z06dVJ4eLji4+MVEhKi7OxsVa9eXdeuXZP057U9x44d06pVq/TNN9+oR48eioqK0ueff249Rps2bfTJJ59o9erV6t27t3X80qVLeu655zR06NAcdcPCwnTw4MHcf/g7KFQh569TZZLk6empGTNm3PR/AAAAoDxdf9quXTtdu3ZNFotF0dG2T7D/7bffdODAAcXHx6t58+aS/rxQ+GZ1e/bsqZ49e+qxxx5Tu3btdP78eZUsWVKS1LlzZ3Xq1ElPPvmkXF1d1atXL0l/BqS9e/eqQoUKN+2tcuXKun79upKTk62nqw4cOJDjGt3cKFQhBwAAOJ6rq6v27dtn/fdflShRQv7+/vroo48UHBys48eP6/XXX7fZZsqUKQoODladOnXk4uKizz77TEFBQTlOKT366KOaP3++nn76abm5uemxxx7Ta6+9pkaNGmnw4MF69tln5e3trb1792rNmjX68MMPrafAnnvuOc2aNUtubm4aPny4vLy87P6chBwAAO5Dt5r9cXFx0aJFizR06FBVr15dlSpV0vTp0/Xwww9bt/Hx8dGkSZN06NAhubq6qn79+vrPf/4jF5ecN20/9thjys7O1tNPPy0XFxd169ZN69ev1xtvvKHmzZvLMAw98MAD6tmzp3WfhIQEPfvss2rRooUCAwP19ttva8yYMXZ/RothGIbde91D0tPT5efnp5qjV8jV07ug23GYRT3LOrVer0+58BiA+WRdvazd73ZWWlqawx5BcuPvUnJysooVK5bn41y6dEmRkZEO7fVeV+CvdQAAAHAETleZRPzZOU6uGH3nTQAAKEDM5AAAAFMi5AAAAFMi5AAAAFMi5AAAAFMi5AAAAFMi5AAAAFMi5AAAAFPiOTkmMTBggFPrJYknHgMACjdmcgAAgCkRcgAAgCkRcgAAgCkRcgAAgCkRcgAAgCkRcgAAgCkRcgAAgCnxnByTiD87x8kVo51cDwAA+zCTAwAATImQAwAATImQAwAATImQAwAATImQAwAATImQAwAATImQAwAATInn5JjEwIABTq2XpBNOrQcA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a9fWwoUL77p4TEyMFi5cqOXLl8vHx8d6nY2fn5+8vLzk5+enAQMGaMSIESpZsqR8fX01ZMgQNW7cmDur/sfAgAFOrZekE06tBwCAvfIUcrKysrR06VLt27dPklS1alV16dJFbm72HW7WrFmS/rwz668SEhLUt29fSdLUqVPl4uKi7t272zwMEAAA4HbsDjk//fSTOnfurNTUVOuTiSdOnKiAgACtXLnSemdUbhiGccdtPD09NWPGDM2YMcPeVgEAwH3M7mtynn32WVWrVk0nTpzQ9u3btX37dqWkpKhmzZoaNGiQI3oEAACwm90zOTt37tS2bdtUokQJ61iJEiX0zjvvqH79+vnaHAAAQF7ZPZPz4IMP6vTp0znGz5w5owoVKuRLUwAAAHcrVyHnr69IiIuL09ChQ/X555/rxIkTOnHihD7//HMNHz5cEydOdHS/AAAAuZKr01XFixeXxWKxfm0Yhnr06GEdu3EBcadOnZSVleWANgEAAOyTq5Czdu1aR/eBuxR/do6TK0Y7uR4AAPbJVchp0aKFo/sAAADIV3bfXfXdd9/ddv1DDz2U52YAAADyi90h53+fTizJ5nodrskBAACFgd23kF+4cMFmOXPmjL766ivVr18/z28hBwAAyG92z+T4+fnlGGvTpo3c3d01YsQIJScn50tjAAAAd8PumZxbCQwM1IEDB/LrcAAAAHfF7pmc3bt323xtGIZOnTqlCRMmqHbt2vnVF+w0MGCAU+sl6YRT6wEAYC+7Q07t2rVlsVhyvEG8UaNGmjt3br41BgAAcDfsDjnHjh2z+drFxUUBAQHy9PTMt6YAAADult0hJzw83BF9AAAA5KtcX3i8adMmffnllzZjH3/8sSIiIlS6dGkNGjRIGRkZ+d4gAABAXuQ65IwfP14//fST9es9e/ZowIABioqK0uuvv66VK1cqLi7OIU0CAADYK9chZ+fOnWrdurX160WLFqlhw4aKj4/XiBEjNH36dC1evNghTQIAANgr1yHnwoULCgwMtH69fv16tW/f3vp1/fr1lZKSkr/dAQAA5FGuLzwODAzUsWPHFBoaqmvXrmn79u168803ret///13FSlSxCFN4s7iz85xcsVoJ9cDAMA+uZ7JeeSRR/T6669rw4YNGjVqlIoWLarmzZtb1+/evVsPPPCAQ5oEAACwV65nct566y1169ZN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r7867NEHKIQK+O6uQuuDDz4wwsLCDHd3d6NBgwbG5s2bHVZr7dq1hqQcS58+ffK91s3qSDISEhLyvdYN/fv3N8LDww13d3cjICDAaN26tfH11187rN7NOPIW8p49exrBwcGGu7u7UaZMGaNnz57G4cOHHVLrr1auXGlUr17d8PDwMCpXrmx89NFHDq23evVqQ5Jx4MABh9YxDMNIT083hg0bZoSFhRmenp5G+fLljTfeeMPIyMhwaN1PP/3UKF++vOHu7m4EBQUZMTExxsWLF/Pl2Hf6Oc/OzjbGjBljBAYGGh4eHkbr1q3v+nt9p5oJCQk3XR8bG5vv9W7cpn6zZe3atfle748//jAeffRRIyQkxHB3dzeCg4ONzp07Gz/88EOeauHeZDEMBz9CFAAAoABwTQ4AADAlQg4AADAlQg4AADAlQg4AADAlQg4AADAlQg4AADAlQg4AADAlQg4Ap1i3bp0sFosuXrx4V8cpV66cpk2bli89ATA3Qg5wF1JSUtS/f3+FhITI3d1d4eHhGjZsmH777Teb7R5++GFZLJYcy/Xr13Os9/DwUJkyZdSpUyctWbIkR80b223evNlmPCMjQ/7+/rJYLFq3bt0tez579qxeeOEFhYWFycPDQ0FBQYqOjtb3339/998QAChECDlAHh09elT16tXToUOH9Mknn+jw4cOaPXu29WWu58+ft9l+4MCBOnXqlM3y13dA3Vh/5MgRffHFF6patap69eqlQYMG5agdGhqqhIQEm7GlS5eqWLFid+y7e/fu2rFjh+bNm6eDBw9qxYoVevjhh3MEMwC41xFygDyKiYmRu7u7vv76a7Vo0UJhYWFq3769vvnmG/3666964403bLYvWrSo9cWHN3sB4o31ZcuWVaNGjTRx4kT94x//UHx8vL755hubbfv06aNFixbpjz/+sI7NnTtXffr0uW3PFy9e1IYNGzRx4kS1bNlS4eHhatCggUaNGqXOnTtLkvr376+OHTva7JeZmanSpUtrzpw5kv6ceRoyZIiGDx+uEiVKKDAwUPHx8dYX2fr4+KhChQpatWpVjh6+//571axZU56enmrUqJF+/PFHm/VffPGFqlWrJg8PD5UrV06TJ0++7WcCgFsh5AB5cP78ea1evVovvvhijre3BwUFqXfv3vr00091t6+G69Onj0qUKJHjtFVkZKTKlSunL774QpJ0/Phxfffdd3r66adve7xixYqpWLFiWrZsmTIyMm66zbPPPquvvvpKp06dso59+eWXunLlinr27GkdmzdvnkqVKqUffvhBQ4YM0QsvvKDHH39cTZo00fbt29W2bVs9/fTTunLlis3xR44cqcmTJ2vr1q0KCAhQp06dlJmZKUlKTk5Wjx491KtXL+3Zs0fjxo3TmDFjlJiYmOvvGQDcQMgB8uDQoUMyDENVqlS56foqVarowoULOnv2rHVs5syZ1pBRrFgxvfzyy3es4+LiogcffFA///xzjnX9+/fX3LlzJUmJiYl65JFHFBAQcNvjubm5KTExUfPmzVPx4sXVtGlTjR49Wrt377Zu06RJE1WqVEnz58+3jiUkJOjxxx+3OR1Wq1Yt/e1vf1PFihU1atQoeXp6qlSpUho4cKAqVqyosWPH6rfffrM5tiTFxsaqTZs2qlGjhubNm6fTp09r6dKlkqQpU6aodevWGjNmjB588EH17dtXgwcP1nvvvXfH7xUA/C9CDnAX7Jmp6d27t3bu3GldRo0alesaFoslx/hTTz2lTZs26ejRo0pMTFT//v1zdbzu3bvr5MmTWrFihdq1a6d169apbt26NrMlzz77rPWan9OnT2vVqlU5jl+zZk3rv11dXeXv768aNWpYxwIDAyVJZ86csdmvcePG1n+XLFlSlSpV0r59+yRJ+/btU9OmTW22b9q0qQ4dOqSsrKxcfT4AuIGQA+RBhQoVZLFYrH+c/9e+fftUokQJm5kVPz8/VahQwbqUKlXqjnWysrJ06NAhRURE5Fjn7++vjh07asCAAbp69arat2+f6/49PT3Vpk0bjRkzRv/973/Vt29fxcbGWtc/88wzOnr0qDZt2qR//etfioiIUPPmzW2OUaRIEZuvLRaLzdiNYJadnZ3rvgAgPxFygDzw9/dXmzZtNHPmTJuLfyUpNTVVCxYsUM+ePW86A2OPefPm6cKFC+revftN1/fv31/r1q3TM888I1dX1zzXqVq1qi5fvmz92t/fX127dlVCQoISExPVr1+/PB/7f/311vcLFy7o4MGD1tN+VapUyXEr+/fff68HH3zwrj4fgPuT2503AXAzH374oZo0aaLo6Gi9/fbbioiI0E8//aSRI0eqTJkyeuedd+w63pUrV5Samqrr16/rxIkTWrp0qaZOnaoXXnhBLVu2vOk+7dq109mzZ+Xr65urGr/99psef/xx9e/fXzVr1pSPj4+2bdumSZMmqUuXLjbbPvvss+rYsaOysrLueNeWPcaPHy9/f38FBgbqjTfeUKlSpdS1a1dJ0ssvv6z69evrrbfeUs+ePbVp0yZ9+OGHmjlzZr7VB3D/IOQAeVSxYkVt27ZNsbGx6tGjh86fP6+goCB17dpVsbGxKlmypF3Hi4+PV3x8vNzd3eXv76/IyEh9+umnevTRR2+5j8ViydVprxuKFSumhg0baurUqTpy5IgyMzMVGhqqgQMHavTo0TbbRkVFKTg4WNWqVVNISIhdn+V2JkyYoGHDhunQoUOqXbu2Vq5cKXd3d0lS3bp1tXjxYo0dO1ZvvfWWgoODNX78ePXt2zff6gO4f1iMu73HFYApXbp0SWXKlFFCQoK6detW0O0AgN2YyQFgIzs7W+fOndPkyZNVvHhx60MCAeBeQ8gBYOP48eOKiIhQ2bJllZiYaPPqCQC4l3C6CgAAmBK3kAMAAFMi5AAAAFMi5AAAAFMi5AAAAFMi5AAAAFMi5AAAAFMi5AAAAFMi5AAAAFMi5AAAAFP6P3bKJ0+eW3lcAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "pusch_transmitter.pilot_pattern.show();"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "96a9afc5",
   "metadata": {},
   "source": [
    "From the figure above, we can see that there is a single transmitter sending a single stream (or so-called layer).\n",
    "DMRS are only sent on even subcarriers while odd subcarriers are masked, i.e., blocked for data transmission.\n",
    "This corresponds to the DMRS Configuration Type 1 with the parameter `NumCDMGroupsWithoutData` set to 2. We will explain what that means later.\n",
    "\n",
    "In 5G NR, one can configure many different pilot patterns to adapt to different channel conditions and to allow for spatial multiplexing of up to twelve layers. Each transmitted layer is identified by a DMRS port, i.e., a distinct pilot pattern. In our running example, the transmitter uses the DMRS port 0.\n",
    "\n",
    "With the current PUSCH configuration, four different DMRS ports 0,1,2,3 are available.\n",
    "This can be verified with the following command:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "8310da11",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-03-08T23:46:20.021430Z",
     "iopub.status.busy": "2025-03-08T23:46:20.021109Z",
     "iopub.status.idle": "2025-03-08T23:46:20.025918Z",
     "shell.execute_reply": "2025-03-08T23:46:20.025305Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[0, 1, 2, 3]"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pusch_config.dmrs.allowed_dmrs_ports"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "09b846c4",
   "metadata": {},
   "source": [
    "Next, we configure three other transmitters using each one of the remaing ports. Then, we create a new PUSCHTransmitter instance from the list of PUSCH configurations which is able to generate transmit signals for all four transmitters in parallel."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "fb66df3e",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-03-08T23:46:20.030158Z",
     "iopub.status.busy": "2025-03-08T23:46:20.029846Z",
     "iopub.status.idle": "2025-03-08T23:46:20.507199Z",
     "shell.execute_reply": "2025-03-08T23:46:20.505812Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Shape of x: (16, 4, 1, 14, 48)\n"
     ]
    }
   ],
   "source": [
    "# Clone the original PUSCHConfig and change the DMRS port set\n",
    "pusch_config_1 = pusch_config.clone()\n",
    "pusch_config_1.dmrs.dmrs_port_set = [1]\n",
    "pusch_config_2 = pusch_config.clone()\n",
    "pusch_config_2.dmrs.dmrs_port_set = [2]\n",
    "pusch_config_3 = pusch_config.clone()\n",
    "pusch_config_3.dmrs.dmrs_port_set = [3]\n",
    "\n",
    "# Create a PUSCHTransmitter from the list of PUSCHConfigs\n",
    "pusch_transmitter_multi = PUSCHTransmitter([pusch_config, pusch_config_1, pusch_config_2, pusch_config_3])\n",
    "\n",
    "# Generate a batch of random transmit signals\n",
    "x, b  = pusch_transmitter_multi(batch_size)\n",
    "\n",
    "# x has shape [batch_size, num_tx, num_tx_ant, num_ofdm_symbols, fft_size]\n",
    "print(\"Shape of x:\", x.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bd19d2c6",
   "metadata": {},
   "source": [
    "Inspecting the shape of x reveals that we have indeed four single-antenna transmitters. Let us now have a look at the resuling pilot pattern for each of them:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "80feec0e",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-03-08T23:46:20.510620Z",
     "iopub.status.busy": "2025-03-08T23:46:20.509987Z",
     "iopub.status.idle": "2025-03-08T23:46:21.683884Z",
     "shell.execute_reply": "2025-03-08T23:46:21.683088Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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fe3YsUPLli3Tr7/+qpiYGC1cuFBPPvnkHfcNDg7WqVOncozfGAsJCbnlvsOGDbN5Rk+LFi2sF+Xeia+vr9q0aaM2bdqoSJEimjdvnrZs2aIWLVrccd+bBYHs7GzVqFFDU6ZMuek+N0LJkSNH1Lp1a1WuXFlTpkxRaGio3N3d9Z///EdTp07NcU2Nq6vrTY93q3HjDk++CA4O1tq1a2UYhiwWi3U8N99vAOZByAFyISUlRbGxserSpYu6dOmi7OxszZs3TyNGjFCHDh1sZiVupnbt2tqwYYOys7NtLj7esmWLihYtqgcffPCW+7766qt66qmnrF+XKFEiT5+hXr16mjdvnvUP/V//+OfWAw88oF27dql169a33X/lypXKyMjQihUrbGZp/no6y5Fq166tf/7zn9q3b5+qVq1qHd+yZYt1PQDz45ocIBeGDBkiwzD0wQcfSJJcXFw0e/ZsnTt3znpr9e089thjOn36tJYsWWIdO3funD777DN16tTppteP3FC1alVFRUVZl8jIyFtue+XKlVveHr1q1SpJUqVKlSTJ+vDCixcv3rH/G3r06KFff/1V8fHxOdb98ccfunz5sqT/n4H564xLWlqaEhIScl3rbnTp0kVFihTRzJkzrWOGYWj27NkqU6aMmjRp4pQ+ABQsZnKAO1i6dKmWL19uvQ36hjp16igmJkYffvih+vbta33uzM089thjatSokfr166e9e/dan3iclZWlN998M996vXLlipo0aaJGjRqpXbt2Cg0N1cWLF7Vs2TJt2LBBXbt2VZ06dST9OStTvHhxzZ49Wz4+PvL29lbDhg0VERFxy+M//fTTWrx4sZ5//nmtXbtWTZs2VVZWlvbv36/Fixdr9erVqlevntq2bSt3d3d16tRJzz33nC5duqT4+HiVLl36pqft8lvZsmU1fPhwvffee8rMzFT9+vWt34MFCxbc8jQYAJMp0Hu7gELiVreQ//7770bZsmWN2rVr3/Qpuenp6UZISIhRt27dOz5F9/z588aAAQMMf39/o2jRokaLFi2MrVu35ttnMIw/n3gcHx9vdO3a1QgPDzc8PDyMokWLGnXq1DHee+89IyMjw2b75cuXG1WrVjXc3Nxsbidv0aKFUa1atZvWuHbtmjFx4kSjWrVqhoeHh1GiRAkjMjLSePPNN420tDTrditWrDBq1qxpeHp6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Y8eOatu2rc0xXnrpJXl4eGjz5s02x9+1a5d2795tcwrKMAxlZ2fr2LFjOnjwoNzc3BQZGWldX7ly5RzX6OZGoXkY4M1MnTpVLi4u6t69u83DAAEAwJ9SUlJsLs243SzODf3797eeHpoxY0aO9Z06dVJ4eLji4+MVEhKi7OxsVa9eXdeuXZP057U9x44d06pVq/TNN9+oR48eioqK0ueff249Rps2bfTJJ59o9erV6t27t3X80qVLeu655zR06NAcdcPCwnTw4MHcf/g7KFQh569TZZLk6empGTNm3PR/AAAAoDxdf9quXTtdu3ZNFotF0dG2T7D/7bffdODAAcXHx6t58+aS/rxQ+GZ1e/bsqZ49e+qxxx5Tu3btdP78eZUsWVKS1LlzZ3Xq1ElPPvmkXF1d1atXL0l/BqS9e/eqQoUKN+2tcuXKun79upKTk62nqw4cOJDjGt3cKFQhBwAAOJ6rq6v27dtn/fdflShRQv7+/vroo48UHBys48eP6/XXX7fZZsqUKQoODladOnXk4uKizz77TEFBQTlOKT366KOaP3++nn76abm5uemxxx7Ta6+9pkaNGmnw4MF69tln5e3trb1792rNmjX68MMPrafAnnvuOc2aNUtubm4aPny4vLy87P6chBwAAO5Dt5r9cXFx0aJFizR06FBVr15dlSpV0vTp0/Xwww9bt/Hx8dGkSZN06NAhubq6qn79+vrPf/4jF5ecN20/9thjys7O1tNPPy0XFxd169ZN69ev1xtvvKHmzZvLMAw98MAD6tmzp3WfhIQEPfvss2rRooUCAwP19ttva8yYMXZ/RothGIbde91D0tPT5efnp5qjV8jV07ug23GYRT3LOrVer0+58BiA+WRdvazd73ZWWlqawx5BcuPvUnJysooVK5bn41y6dEmRkZEO7fVeV+CvdQAAAHAETleZRPzZOU6uGH3nTQAAKEDM5AAAAFMi5AAAAFMi5AAAAFMi5AAAAFMi5AAAAFMi5AAAAFMi5AAAAFPiOTkmMTBggFPrJYknHgMACjdmcgAAgCkRcgAAgCkRcgAAgCkRcgAAgCkRcgAAgCkRcgAAgCkRcgAAgCnxnByTiD87x8kVo51cDwAA+zCTAwAATImQAwAATImQAwAATImQAwAATImQAwAATImQAwAATImQAwAATInn5JjEwIABTq2XpBNOrQcA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a9fWwoUL77p4TEyMFi5cqOXLl8vHx8d6nY2fn5+8vLzk5+enAQMGaMSIESpZsqR8fX01ZMgQNW7cmDur/sfAgAFOrZekE06tBwCAvfIUcrKysrR06VLt27dPklS1alV16dJFbm72HW7WrFmS/rwz668SEhLUt29fSdLUqVPl4uKi7t272zwMEAAA4HbsDjk//fSTOnfurNTUVOuTiSdOnKiAgACtXLnSemdUbhiGccdtPD09NWPGDM2YMcPeVgEAwH3M7mtynn32WVWrVk0nTpzQ9u3btX37dqWkpKhmzZoaNGiQI3oEAACwm90zOTt37tS2bdtUokQJ61iJEiX0zjvvqH79+vnaHAAAQF7ZPZPz4IMP6vTp0znGz5w5owoVKuRLUwAAAHcrVyHnr69IiIuL09ChQ/X555/rxIkTOnHihD7//HMNHz5cEydOdHS/AAAAuZKr01XFixeXxWKxfm0Yhnr06GEdu3EBcadOnZSVleWANgEAAOyTq5Czdu1aR/eBuxR/do6TK0Y7uR4AAPbJVchp0aKFo/sAAADIV3bfXfXdd9/ddv1DDz2U52YAAADyi90h53+fTizJ5nodrskBAACFgd23kF+4cMFmOXPmjL766ivVr18/z28hBwAAyG92z+T4+fnlGGvTpo3c3d01YsQIJScn50tjAAAAd8PumZxbCQwM1IEDB/LrcAAAAHfF7pmc3bt323xtGIZOnTqlCRMmqHbt2vnVF+w0MGCAU+sl6YRT6wEAYC+7Q07t2rVlsVhyvEG8UaNGmjt3br41BgAAcDfsDjnHjh2z+drFxUUBAQHy9PTMt6YAAADult0hJzw83BF9AAAA5KtcX3i8adMmffnllzZjH3/8sSIiIlS6dGkNGjRIGRkZ+d4gAABAXuQ65IwfP14//fST9es9e/ZowIABioqK0uuvv66VK1cqLi7OIU0CAADYK9chZ+fOnWrdurX160WLFqlhw4aKj4/XiBEjNH36dC1evNghTQIAANgr1yHnwoULCgwMtH69fv16tW/f3vp1/fr1lZKSkr/dAQAA5FGuLzwODAzUsWPHFBoaqmvXrmn79u168803ret///13FSlSxCFN4s7iz85xcsVoJ9cDAMA+uZ7JeeSRR/T6669rw4YNGjVqlIoWLarmzZtb1+/evVsPPPCAQ5oEAACwV65nct566y1169ZN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r7867NEHKIQK+O6uQuuDDz4wwsLCDHd3d6NBgwbG5s2bHVZr7dq1hqQcS58+ffK91s3qSDISEhLyvdYN/fv3N8LDww13d3cjICDAaN26tfH11187rN7NOPIW8p49exrBwcGGu7u7UaZMGaNnz57G4cOHHVLrr1auXGlUr17d8PDwMCpXrmx89NFHDq23evVqQ5Jx4MABh9YxDMNIT083hg0bZoSFhRmenp5G+fLljTfeeMPIyMhwaN1PP/3UKF++vOHu7m4EBQUZMTExxsWLF/Pl2Hf6Oc/OzjbGjBljBAYGGh4eHkbr1q3v+nt9p5oJCQk3XR8bG5vv9W7cpn6zZe3atfle748//jAeffRRIyQkxHB3dzeCg4ONzp07Gz/88EOeauHeZDEMBz9CFAAAoABwTQ4AADAlQg4AADAlQg4AADAlQg4AADAlQg4AADAlQg4AADAlQg4AADAlQg4Ap1i3bp0sFosuXrx4V8cpV66cpk2bli89ATA3Qg5wF1JSUtS/f3+FhITI3d1d4eHhGjZsmH777Teb7R5++GFZLJYcy/Xr13Os9/DwUJkyZdSpUyctWbIkR80b223evNlmPCMjQ/7+/rJYLFq3bt0tez579qxeeOEFhYWFycPDQ0FBQYqOjtb3339/998QAChECDlAHh09elT16tXToUOH9Mknn+jw4cOaPXu29WWu58+ft9l+4MCBOnXqlM3y13dA3Vh/5MgRffHFF6patap69eqlQYMG5agdGhqqhIQEm7GlS5eqWLFid+y7e/fu2rFjh+bNm6eDBw9qxYoVevjhh3MEMwC41xFygDyKiYmRu7u7vv76a7Vo0UJhYWFq3769vvnmG/3666964403bLYvWrSo9cWHN3sB4o31ZcuWVaNGjTRx4kT94x//UHx8vL755hubbfv06aNFixbpjz/+sI7NnTtXffr0uW3PFy9e1IYNGzRx4kS1bNlS4eHhatCggUaNGqXOnTtLkvr376+OHTva7JeZmanSpUtrzpw5kv6ceRoyZIiGDx+uEiVKKDAwUPHx8dYX2fr4+KhChQpatWpVjh6+//571axZU56enmrUqJF+/PFHm/VffPGFqlWrJg8PD5UrV06TJ0++7WcCgFsh5AB5cP78ea1evVovvvhijre3BwUFqXfv3vr00091t6+G69Onj0qUKJHjtFVkZKTKlSunL774QpJ0/Phxfffdd3r66adve7xixYqpWLFiWrZsmTIyMm66zbPPPquvvvpKp06dso59+eWXunLlinr27GkdmzdvnkqVKqUffvhBQ4YM0QsvvKDHH39cTZo00fbt29W2bVs9/fTTunLlis3xR44cqcmTJ2vr1q0KCAhQp06dlJmZKUlKTk5Wjx491KtXL+3Zs0fjxo3TmDFjlJiYmOvvGQDcQMgB8uDQoUMyDENVqlS56foqVarowoULOnv2rHVs5syZ1pBRrFgxvfzyy3es4+LiogcffFA///xzjnX9+/fX3LlzJUmJiYl65JFHFBAQcNvjubm5KTExUfPmzVPx4sXVtGlTjR49Wrt377Zu06RJE1WqVEnz58+3jiUkJOjxxx+3OR1Wq1Yt/e1vf1PFihU1atQoeXp6qlSpUho4cKAqVqyosWPH6rfffrM5tiTFxsaqTZs2qlGjhubNm6fTp09r6dKlkqQpU6aodevWGjNmjB588EH17dtXgwcP1nvvvXfH7xUA/C9CDnAX7Jmp6d27t3bu3GldRo0alesaFoslx/hTTz2lTZs26ejRo0pMTFT//v1zdbzu3bvr5MmTWrFihdq1a6d169apbt26NrMlzz77rPWan9OnT2vVqlU5jl+zZk3rv11dXeXv768aNWpYxwIDAyVJZ86csdmvcePG1n+XLFlSlSpV0r59+yRJ+/btU9OmTW22b9q0qQ4dOqSsrKxcfT4AuIGQA+RBhQoVZLFYrH+c/9e+fftUokQJm5kVPz8/VahQwbqUKlXqjnWysrJ06NAhRURE5Fjn7++vjh07asCAAbp69arat2+f6/49PT3Vpk0bjRkzRv/973/Vt29fxcbGWtc/88wzOnr0qDZt2qR//etfioiIUPPmzW2OUaRIEZuvLRaLzdiNYJadnZ3rvgAgPxFygDzw9/dXmzZtNHPmTJuLfyUpNTVVCxYsUM+ePW86A2OPefPm6cKFC+revftN1/fv31/r1q3TM888I1dX1zzXqVq1qi5fvmz92t/fX127dlVCQoISExPVr1+/PB/7f/311vcLFy7o4MGD1tN+VapUyXEr+/fff68HH3zwrj4fgPuT2503AXAzH374oZo0aaLo6Gi9/fbbioiI0E8//aSRI0eqTJkyeuedd+w63pUrV5Samqrr16/rxIkTWrp0qaZOnaoXXnhBLVu2vOk+7dq109mzZ+Xr65urGr/99psef/xx9e/fXzVr1pSPj4+2bdumSZMmqUuXLjbbPvvss+rYsaOysrLueNeWPcaPHy9/f38FBgbqjTfeUKlSpdS1a1dJ0ssvv6z69evrrbfeUs+ePbVp0yZ9+OGHmjlzZr7VB3D/IOQAeVSxYkVt27ZNsbGx6tGjh86fP6+goCB17dpVsbGxKlmypF3Hi4+PV3x8vNzd3eXv76/IyEh9+umnevTRR2+5j8ViydVprxuKFSumhg0baurUqTpy5IgyMzMVGhqqgQMHavTo0TbbRkVFKTg4WNWqVVNISIhdn+V2JkyYoGHDhunQoUOqXbu2Vq5cKXd3d0lS3bp1tXjxYo0dO1ZvvfWWgoODNX78ePXt2zff6gO4f1iMu73HFYApXbp0SWXKlFFCQoK6detW0O0AgN2YyQFgIzs7W+fOndPkyZNVvHhx60MCAeBeQ8gBYOP48eOKiIhQ2bJllZiYaPPqCQC4l3C6CgAAmBK3kAMAAFMi5AAAAFMi5AAAAFMi5AAAAFMi5AAAAFMi5AAAAFMi5AAAAFMi5AAAAFMi5AAAAFP6P3bKJ0+eW3lcAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjkAAAHHCAYAAABdm0mZAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAARsdJREFUeJzt3Xt8z/X///H7e5sd7ISZHdjmmPMhS84hY4QUFX1UTkk1p5RQaaKa9FEoh0/7jMmHSFHq80Esx0IMUY6JTMzZZpOZ7fX7o5/3t3dz2Hv2fm9ebtfL5XW5eD9fh8fjvc9n3Hu+ThbDMAwBAACYjEtRNwAAAOAIhBwAAGBKhBwAAGBKhBwAAGBKhBwAAGBKhBwAAGBKhBwAAGBKhBwAAGBKhBwAAGBKhBwAAGBKhBzckSwWS76WNWvW6N///rcsFovmzJmT5zgbN26Ui4uLXnrppRvWO378uEaNGqU2bdrI19fXemxH2bBhgzp27Kjy5cvL09NT4eHh6tKli+bPn2/d5uLFixo7dqxD+yhqCQkJqlmzpjw9PVWtWjV98MEHRd0SACey8O4q3In+85//2Hz++OOPtXLlSs2dO9dmvF27dipXrpzuu+8+7d27V3v37lVAQIAkKTs7Ww0bNlR6erp2794tb2/v69Zbs2aN2rRpo2rVqqls2bLauHGjVq9erdatWxf6d1u0aJF69OihBg0aqGfPnipdurQOHTqkdevWqUSJElq9erUk6fTp0woMDFRsbKzGjh1b6H0UtX/961969tln1b17d0VHR2v9+vWaO3euJkyYoJEjRxZ1ewCcwQBgxMTEGDf6dfj555+NEiVKGH369LGOxcXFGZKMpUuX3vT46enpxpkzZwzDMIxFixYZkozVq1ffct/XUqtWLaN27dpGVlZWnnUnTpyw/vnUqVOGJCM2NjZfx83IyCisFh3u4sWLRkBAgNGpUyeb8V69ehne3t7G2bNni6gzAM7E6SogH2rVqqURI0YoMTFRa9eu1aFDhzRu3Dh169ZNXbp0uen+vr6+KlOmjBM6lQ4ePKhGjRrJ3d09z7py5cpJkg4fPqzAwEBJ0htvvGE9PXd1RqdPnz7y8fHRwYMH9cADD8jX11e9evWSJOXm5mry5MmqXbu2PD09FRQUpIEDB+rcuXM2tb788kt16tRJoaGh8vDwUJUqVTR+/Hjl5OTYbNe6dWvVqVNHO3fuVKtWrVSyZElVrVpVn332mSRp7dq1aty4sby8vFS9enWtWrXqpj+D1atX68yZM3r++edtxmNiYpSZman//ve/+fhJArjdEXKAfHrttddUuXJlDRw4UM8++6zc3Nw0derUom4rj4iICCUlJeno0aPX3SYwMFAzZsyQJD388MOaO3eu5s6dq27dulm3uXLliqKjo1WuXDn985//VPfu3SVJAwcO1IgRI9S8eXNNmTJFffv21bx58xQdHa3s7Gzr/omJifLx8dHw4cM1ZcoURUZG6vXXX9eoUaPy9HPu3Dl17txZjRs31sSJE+Xh4aGePXtq4cKF6tmzpx544AFNmDBBmZmZeuSRR3ThwoUb/gy2b98uSbrnnntsxiMjI+Xi4mJdD8DkinoqCSgObna66qoVK1YYkgxJxuTJkwtUy9GnqxISEgxJhru7u9GmTRtjzJgxxvr1642cnByb7W50uqp3796GJGPUqFE24+vXrzckGfPmzbMZX758eZ7xixcv5jnuwIEDjZIlSxqXLl2yjrVq1cqQZMyfP986tnfvXkOS4eLiYmzatMk6fvXnP3v27Bv+DGJiYgxXV9drrgsMDDR69ux5w/0BmAMzOYAdypQpIxeXP39t2rdvX8TdXFu/fv20fPlytW7dWhs2bND48ePVsmVLVatWTd9//71dx3ruuedsPi9atEj+/v5q166dTp8+bV0iIyPl4+NjvahZkry8vKx/vnDhgk6fPq2WLVvq4sWL2rt3r81xfXx81LNnT+vn6tWrq1SpUqpZs6YaN25sHb/6519//fWGff/xxx/XPF0nSZ6envrjjz9u8s0BmIFbUTcA3C5ycnL0zDPPKDQ0VBkZGRoyZIhWrlzp8LoZGRnKyMiwfnZ1dbVeT3M90dHRio6O1sWLF5WcnKyFCxdq5syZ6ty5s/bu3Wu9NudG3NzcVKFCBZuxAwcOKC0t7br7nzx50vrnn3/+Wa+99pq+/fZbpaen22yXlpZm87lChQqyWCw2Y/7+/goLC8szJinP9T9/5+XlpcuXL19z3aVLl2wCGADzIuQA+TRlyhRt375dX3zxhX7//XfFxMRo/vz5+sc//uHQuv/85z/1xhtvWD9HRETo8OHD+dq3ZMmSatmypVq2bKmyZcvqjTfe0LJly9S7d++b7uvh4WGdtboqNzdX5cqV07x58665z9Xwdf78ebVq1Up+fn4aN26cqlSpIk9PT23btk0jR45Ubm6uzX6urq7XPN71xo2bPPkiJCREOTk5OnnypE0gu3z5ss6cOaPQ0NAb7g/AHAg5QD6kpKQoNjZWXbt2VdeuXZWbm6s5c+Zo+PDh6tSpk3WGwRGeeuoptWjRwvq5oLMQVy/CPX78uCTlmTnJjypVqmjVqlVq3rz5DftYs2aNzpw5o8WLF+u+++6zjh86dMjumgXRoEEDSdLWrVv1wAMPWMe3bt2q3Nxc63oA5sY1OUA+DB48WIZhWJ+Y6+LiopkzZ+r06dN65ZVXHFq7cuXKioqKsi7Nmze/4fZJSUnXHP/f//4n6c/rXaQ/Z3mkP2dd8uuxxx5TTk6Oxo8fn2fdlStXrMe6OgPz1xmXy5cva/r06fmudSvuv/9+lSlTxnoH2VUzZsxQyZIl1alTJ6f0AaBoMZMD3MSSJUv05ZdfatKkSTbXiNx9992KiYnRhx9+qD59+qhRo0Y3PM6bb74p6c9rVSRp7ty52rBhg6Q/b08vLF27dlWlSpXUpUsXValSRZmZmVq1apW++uorNWrUyPpcHy8vL9WqVUsLFy7UXXfdpTJlyqhOnTqqU6fOdY/dqlUrDRw4UHFxcdqxY4fat2+vEiVK6MCBA1q0aJGmTJmiRx55RM2aNVPp0qXVu3dvDRkyRBaLRXPnzr3paabC4uXlpfHjxysmJkaPPvqo9YnH//nPf/TWW2857ZlFAIpY0d7cBRQP17uF/MKFC0aFChWMBg0aGFeuXMmzPj093QgNDTUaNmx4zfV/pf9/6/m1lsL0ySefGD179jSqVKlieHl5GZ6enkatWrWMV1991UhPT7fZ9vvvvzciIyMNd3d3m9vJe/fubXh7e1+3xkcffWRERkYaXl5ehq+vr1G3bl3j5ZdfNo4dO2bd5rvvvjOaNGlieHl5GaGhocbLL79svQX8r7fPt2rVyqhdu3aeGhEREXmeWGwYf/4cY2Ji8vWz+Oijj4zq1asb7u7uRpUqVYz333/fyM3Nzde+AG5/vLsKAACYEtfkAAAAUyLkAAAAUyLkAAAAUyLkAAAAUyLkAAAAUyLkAAAAUzL9wwBzc3N17Ngx+fr6Fugx9gCAO4dhGLpw4YJCQ0PzvLutMF26dOm6L5G1h7u7uzw9PQuhI3Myfcg5duxYnjcZAwBwIykpKapQoYJDjn3p0iWFh4fr1KlTt3wsPz8/hYSEyMXFRTExMYqJiSmEDs3D9CHH19dXklT7xQVy9ShZxN04zuzu5Z1ar+/nvzu1HgA4Q07WRf08qaf13w5HuHz5sk6dOqW1a9fKx8enwMfJyMhQq1atlJKSIj8/v0Ls0DxMH3KunqJy9SgpV0/vIu7GcW7lF6UgzPyzBABnXN7g4+Pj9L+77zRceAwAAEyJkAMAAEyJkAMAAEyJkAMAAEyJkAMAAEzJ9HdX3SniTyU4uWK0k+sBAGAfZnIAAIApEXIAAIApEXIAAIApEXIAAIApEXIAAIApEXIAAIApcQu5SQwI7O/Uekk66tR6AADYi5kcAABgSoQcAABgSoQcAABgSoQcAABgSoQcAABgSoQcAABgSoQcAABgSjwnxyTiTyU4uWK0k+sBAGAfZnIAAIApEXIAAIApEXIAAIApEXIAAIApEXIAAIApEXIAAIApEXIAAIAp8ZwckxgQ2N+p9ZJ01Kn1AACwFzM5AADAlAg5AADAlAg5AADAlAg5AADAlAg5AADAlAg5AADAlAg5AADAlHhOjknEn0pwcsVoJ9cDAMA+zOQAAABTIuQAAABTIuQAAABTIuQAAABTIuQAAABTIuQAAABT4hZykxgQ2N+p9ZJ01Kn1AACwFzM5AADAlAg5AADAlAg5AADAlAg5AADAlAg5AADAlAg5AADAlAg5AADAlIrNc3ImTJig0aNHa+jQoZo8ebIk6dKlS3rxxRe1YMECZWVlKTo6WtOnT1dQUFDRNlsMxZ9KcHLFaCfXAwDAPsViJmfLli3617/+pXr16tmMv/DCC/rqq6+0aNEirV27VseOHVO3bt2KqEsAAHA7KfKQk5GRoV69eik+Pl6lS5e2jqelpSkhIUHvvfee7r//fkVGRmr27Nn6/vvvtWnTpiLsGAAA3IjFYtEXX3xRqMesWLGi9UxPfhV5yImJiVGnTp0UFRVlM56cnKzs7Gyb8Ro1aig8PFwbN2687vGysrKUnp5uswAAcKfr06ePLBaLnn322TzrYmJiZLFY1KdPH+c35kBFGnIWLFigbdu2KS4uLs+61NRUubu7q1SpUjbjQUFBSk1Nve4x4+Li5O/vb13CwsIKu20AAG5LYWFhWrBggf744w/r2KVLlzR//nyFh4cXYWeOUWQhJyUlRUOHDtW8efPk6elZaMcdPXq00tLSrEtKSkqhHRsAgNtZw4YNFRYWpsWLF1vHFi9erPDwcN19993WseXLl6tFixYqVaqUAgIC1LlzZx08eNC6/vLlyxo0aJBCQkLk6empiIiIa05YXBUbG6uQkBDt3LlTkrRhwwa1bNlSXl5eCgsL05AhQ5SZmWnd/uTJk+rSpYu8vLxUqVIlzZs3r0Dft8hCTnJysk6ePKmGDRvKzc1Nbm5uWrt2raZOnSo3NzcFBQXp8uXLOn/+vM1+J06cUHBw8HWP6+HhIT8/P5sFAAD8qV+/fpo9e7b186xZs9S3b1+bbTIzMzV8+HBt3bpVSUlJcnFx0cMPP6zc3FxJ0tSpU7V06VJ9+umn2rdvn+bNm6eKFSvmqWUYhgYPHqyPP/5Y69evV7169XTw4EF16NBB3bt3186dO7Vw4UJt2LBBgwYNsu7Xp08fpaSkaPXq1frss880ffp0nTx50u7vWmS3kLdt21a7du2yGevbt69q1KihkSNHKiwsTCVKlFBSUpK6d+8uSdq3b5+OHDmipk2bFkXLAAAUO3+/9tTDw0MeHh7X3f6JJ57Q6NGj9dtvv0mSvvvuOy1YsEBr1qyxbnP1392rZs2apcDAQO3evVt16tTRkSNHVK1aNbVo0UIWi0URERF56ly5ckVPPPGEtm/frg0bNqh8+fKS/ryspFevXho2bJgkqVq1apo6dapatWqlGTNm6MiRI1q2bJl++OEHNWrUSJKUkJCgmjVr2v2zKbKQ4+vrqzp16tiMeXt7KyAgwDrev39/DR8+XGXKlJGfn58GDx6spk2bqkmTJkXRcrE2ILC/U+sl6ahT6wEAru3v157GxsZq7Nix190+MDBQnTp1UmJiogzDUKdOnVS2bFmbbQ4cOKDXX39dmzdv1unTp60zOEeOHFGdOnXUp08ftWvXTtWrV1eHDh3UuXNntW/f3uYYL7zwgjw8PLRp0yab4//444/auXOnzSkowzCUm5urQ4cOaf/+/XJzc1NkZKR1fY0aNfJco5sfxeZhgNfy/vvvy8XFRd27d7d5GCAAAPhTSkqKzaUZN5rFuapfv37W00PTpk3Ls75Lly6KiIhQfHy8QkNDlZubqzp16ujy5cuS/ry259ChQ1q2bJlWrVqlxx57TFFRUfrss8+sx2jXrp0++eQTrVixQr169bKOZ2RkaODAgRoyZEieuuHh4dq/f3/+v/xNFKuQ89epMkny9PTUtGnTrvk/AAAAUIGuP+3QoYMuX74si8Wi6GjbJ9ifOXNG+/btU3x8vFq2bCnpzwuFr1W3R48e6tGjhx555BF16NBBZ8+eVZkyZSRJDz74oLp06aJ//OMfcnV1Vc+ePSX9GZB2796tqlWrXrO3GjVq6MqVK0pOTraertq3b1+ea3Tzo1iFHAAA4Hiurq7as2eP9c9/Vbp0aQUEBOijjz5SSEiIjhw5olGjRtls89577ykkJER33323XFxctGjRIgUHB+c5pfTwww9r7ty5evLJJ+Xm5qZHHnlEI0eOVJMmTTRo0CA9/fTT8vb21u7du7Vy5Up9+OGH1lNgAwcO1IwZM+Tm5qZhw4bJy8vL7u9JyAEA4A50vdkfFxcXLViwQEOGDFGdOnVUvXp1TZ06Va1bt7Zu4+vrq4kTJ+rAgQNydXVVo0aN9L///U8uLnlv2n7kkUeUm5urJ598Ui4uLurWrZvWrl2rV199VS1btpRhGKpSpYp69Ohh3Wf27Nl6+umn1apVKwUFBenNN9/UmDFj7P6OFsMwDLv3uo2kp6fL399f9V5ZKldP76Jux2EW9Kjg1Ho9F3LhMQDzybmUqZ1vP6i0tDSHPYLk6r9LycnJ8vHxKfBxMjIyFBkZ6dBeb3dF/loHAAAAR+B0lUnEn0pwcsXom28CAEARYiYHAACYEiEHAACYEiEHAACYEiEHAACYEiEHAACYEiEHAACYEiEHAACYEs/JMYkBgf2dWi9JPPEYAFC8MZMDAABMiZADAABMiZADAABMiZADAABMiZADAABMiZADAABMiZADAABMiefkmET8qQQnV4x2cj0AAOzDTA4AADAlQg4AADAlQg4AADAlQg4AADAlQg4AADAlQg4AADAlQg4AADAlnpNjEgMC+zu1XpKOOrUeAAD2YiYHAACYEiEHAACYEiEHAACYEiEHAACYEiEHAACYEiEHAACYEreQm0T8qQQnV4x2cj0AAOzDTA4AADAlQg4AADAlQg4AADAlQg4AADAlQg4AADAlQg4AADAlQg4AADAlnpNjEgMC+zu1XpKOOrUeAAD2YiYHAACYEiEHAACYEiEHAACYEiEHAACYEiEHAACYEiEHAACYEiEHAACYEs/JMYn4UwlOrhjt5HoAANiHmRwAAGBKhBwAAGBKhBwAAGBKhBwAAGBKhBwAAGBKhBwAAGBK3EJuEgMC+zu1XpKOOrUeAJhN4umP5fGHR4H3z8rMkiQ1atRIrq6uiomJUUxMTGG1ZwqEHAAAbmNbtmyRn59fUbdRLHG6CgAAmBIhBwAAmBIhBwAAmBIhBwAAmJLdIWfs2LHKzc3NM56WlqbHH3+8UJoCAAC4VXaHnISEBLVo0UK//vqrdWzNmjWqW7euDh48WKjNAQAAFJTdt5Dv3LlTAwcOVIMGDTRp0iTt379fU6ZM0YgRI/TGG2/YdawZM2ZoxowZOnz4sCSpdu3aev3119WxY0dJ0qVLl/Tiiy9qwYIFysrKUnR0tKZPn66goCB72za9+FMJTq4Y7eR6AADYx+6QU7p0aX366ad65ZVXNHDgQLm5uWnZsmVq27at3cUrVKigCRMmqFq1ajIMQ3PmzFHXrl21fft21a5dWy+88IL++9//atGiRfL399egQYPUrVs3fffdd3bXAgAAd5YCXXj8wQcfaMqUKXr88cdVuXJlDRkyRD/++KPdx+nSpYseeOABVatWTXfddZfeeust+fj4aNOmTUpLS1NCQoLee+893X///YqMjNTs2bP1/fffa9OmTQVpGwAA3EHsDjkdOnTQG2+8oTlz5mjevHnavn277rvvPjVp0kQTJ04scCM5OTlasGCBMjMz1bRpUyUnJys7O1tRUVHWbWrUqKHw8HBt3LjxusfJyspSenq6zQIAAO48doecnJwc7dy5U4888ogkycvLSzNmzNBnn32m999/3+4Gdu3aJR8fH3l4eOjZZ5/VkiVLVKtWLaWmpsrd3V2lSpWy2T4oKEipqanXPV5cXJz8/f2tS1hYmN09AQCA25/dIWflypUKDQ3NM96pUyft2rXL7gaqV6+uHTt2aPPmzXruuefUu3dv7d692+7jXDV69GilpaVZl5SUlAIfCwAA3L4KdE3O+vXr9cQTT6hp06b6/fffJUlz587V3r177T6Wu7u7qlatqsjISMXFxal+/fqaMmWKgoODdfnyZZ0/f95m+xMnTig4OPi6x/Pw8JCfn5/NAgAA7jx2h5zPP/9c0dHR8vLy0vbt25WV9eer3tPS0vT222/fckO5ubnKyspSZGSkSpQooaSkJOu6ffv26ciRI2ratOkt1wEAAOZm9y3kb775pmbOnKmnnnpKCxYssI43b95cb775pl3HGj16tDp27Kjw8HBduHBB8+fP15o1a7RixQr5+/urf//+Gj58uMqUKSM/Pz8NHjxYTZs2VZMmText2/QGBPZ3ar0kHXVqPQAA7GV3yNm3b5/uu+++POP+/v55Ti3dzMmTJ/XUU0/p+PHj8vf3V7169bRixQq1a9dOkvT+++/LxcVF3bt3t3kYIAAAwM3YHXKCg4P1yy+/qGLFijbjGzZsUOXKle06VkLCjZ/S6+npqWnTpmnatGn2tgkAAO5wdl+TM2DAAA0dOlSbN2+WxWLRsWPHNG/ePL300kt67rnnHNEjAACA3eyeyRk1apRyc3PVtm1bXbx4Uffdd588PDz00ksvafDgwY7oEQAAwG52hxyLxaJXX31VI0aM0C+//KKMjAzVqlVLPj4+jugPAACgQOwOOVe5u7urVq1ahdkLAABAoclXyOnWrVu+D7h48eICN4OCiz9144u4C1+0k+sBAGCffF14/Nd3Qfn5+SkpKUlbt261rk9OTlZSUpL8/f0d1igAAIA98jWTM3v2bOufR44cqccee0wzZ86Uq6urpD9f2vn888/zCgUAAFBs2H0L+axZs/TSSy9ZA44kubq6avjw4Zo1a1ahNgcAAFBQdoecK1euXPNFnHv37lVubm6hNAUAAHCr7L67qm/fvurfv78OHjyoe++9V5K0efNmTZgwQX379i30BgEAAArC7pDzz3/+U8HBwZo0aZKOHz8uSQoJCdGIESP04osvFnqDAAAABWF3yHFxcdHLL7+sl19+Wenp6ZLEBccAAKDYKfDDACXCTXEyILC/U+sl6ahT6wEAYC+7Lzw+ceKEnnzySYWGhsrNzU2urq42CwAAQHFg90xOnz59dOTIEY0ZM0YhISGyWCyO6AsAAOCW2B1yNmzYoPXr16tBgwYOaAcAAKBw2H26KiwsTIZhOKIXAACAQmN3yJk8ebJGjRqlw4cPO6AdAACAwmH36aoePXro4sWLqlKlikqWLKkSJUrYrD979myhNQcAAFBQdoecyZMnO6ANAACAwmV3yOndu7cj+sAtij+V4OSK0U6uBwCAffIdcq4+3fhmeEAgAAAoDvIdckqVKnXDZ+IYhiGLxaKcnJxCaQwAAOBW5DvkrF692pF9AAAAFKp8h5xWrVo5sg8AAIBCZfdzcgAAAG4HhBwAAGBKhBwAAGBKdj8nB8XTgMD+Tq2XpKNOrQcAgL3smsnJzs6Wm5ubfvrpJ0f1AwAAUCjsCjklSpRQeHg4z8IBAADFnt3X5Lz66qt65ZVXeBEnAAAo1uy+JufDDz/UL7/8otDQUEVERMjb29tm/bZt2wqtOQAAgIKyO+Q89NBDDmgDAACgcNkdcmJjYx3RBwAAQKEq0C3k58+f12effaaDBw9qxIgRKlOmjLZt26agoCCVL1++sHtEPsSfSnByxWgn1wMAwD52h5ydO3cqKipK/v7+Onz4sAYMGKAyZcpo8eLFOnLkiD7++GNH9AkAAGAXu++uGj58uPr06aMDBw7I09PTOv7AAw9o3bp1hdocAABAQdkdcrZs2aKBAwfmGS9fvrxSU1MLpSkAAOA8ffr0sbmxqHXr1ho2bFiR9VNY7A45Hh4eSk9PzzO+f/9+BQYGFkpTAACgcPXp00cWi0UWi0Xu7u6qWrWqxo0bpytXrmjKlClKTEws8LETExNVqlSpQuu1sNgdch588EGNGzdO2dnZkiSLxaIjR45o5MiR6t69e6E3CAAACkeHDh10/PhxHThwQC+++KLGjh2rd999V/7+/sUypNwqu0POpEmTlJGRoXLlyumPP/5Qq1atVLVqVfn6+uqtt95yRI8AAKAQeHh4KDg4WBEREXruuecUFRWlpUuX5jld9Xfnzp3TU089pdKlS6tkyZLq2LGjDhw4IElas2aN+vbtq7S0NOtM0dixYyVJ06dPV7Vq1eTp6amgoCA98sgjTviW/8fuu6v8/f21cuVKbdiwQTt37lRGRoYaNmyoqKgoR/QHAABu4O+XkHh4eMjDwyNf+3p5eenMmTM33e7qDUdLly6Vn5+fRo4cqQceeEC7d+9Ws2bNNHnyZL3++uvat2+fJMnHx0dbt27VkCFDNHfuXDVr1kxnz57V+vXr7f+Ct6BAz8mRpBYtWqhFixaF2QtuwYDA/k6tl6SjTq0HALi2sLAwm8+xsbHWmZTrMQxDSUlJWrFihQYPHqxTp05dd9ur4ea7775Ts2bNJEnz5s1TWFiYvvjiCz366KPy9/eXxWJRcHCwdb8jR47I29tbnTt3lq+vryIiInT33XcX/IsWQL5CztSpU/XMM8/I09NTU6dOveG2Q4YMKZTGAADAzaWkpMjPz8/6+UazOF9//bV8fHyUnZ2t3Nxc/eMf/9DYsWMVExNz3X327NkjNzc3NW7c2DoWEBCg6tWra8+ePdfdr127doqIiFDlypXVoUMHdejQQQ8//LBKlixp5zcsuHyFnPfff1+9evWSp6en3n///etuZ7FYCDkAADiRn5+fTci5kTZt2mjGjBlyd3dXaGio3NwKfELnpnx9fbVt2zatWbNG33zzjV5//XWNHTtWW7ZscdpFzvn6docOHbrmnwEAwO3D29tbVatWtWufmjVr6sqVK9q8ebP1dNWZM2e0b98+1apVS5Lk7u6unJycPPu6ubkpKipKUVFRio2NValSpfTtt9+qW7dut/5l8sGuu6uys7NVpUqVG05PAQAA86hWrZq6du2qAQMGaMOGDfrxxx/1xBNPqHz58urataskqWLFisrIyFBSUpJOnz6tixcv6uuvv9bUqVO1Y8cO/fbbb/r444+Vm5ur6tWrO613u0JOiRIldOnSJUf1AgAAiqHZs2crMjJSnTt3VtOmTWUYhv73v/+pRIkSkqRmzZrp2WefVY8ePRQYGKiJEyeqVKlSWrx4se6//37VrFlTM2fO1CeffKLatWs7rW+LYRiGPTu8/fbb2r9/v/7973879FxeYUlPT5e/v7/qvbJUrp7eRd2OwyzoUcGp9Xou5O4qAOaTcylTO99+UGlpafm+zsVeV/9dGrxiqDy883er97VkZWbpg+gpDu31dmd3StmyZYuSkpL0zTffqG7duvL2tg0OixcvLrTmAAAACsrukFOqVCle31AMxZ9KcHLFaCfXAwDAPnaFnCtXrqhNmzZq3769zQN/AAAAihu7Ljx2c3PTs88+q6ysLEf1AwAAUCjsfkHnvffeq+3btzuiFwAAgEJj9zU5zz//vF588UUdPXpUkZGReS48rlevXqE1BwAAUFB2h5yePXtKsn1HlcVikWEYslgs13ziIQAAgLPZHXJ4rQMAALgd2B1yIiIiHNEHbtGAwP5OrZckHgYIACjeCvzI4t27d+vIkSO6fPmyzfiDDz54y00BAADcKrtDzq+//qqHH35Yu3btsl6LI/15XY4krskBAADFgt23kA8dOlSVKlXSyZMnVbJkSf38889at26d7rnnHq1Zs8YBLQIAANjP7pmcjRs36ttvv1XZsmXl4uIiFxcXtWjRQnFxcRoyZAjP0AEAAMWC3TM5OTk58vX1lSSVLVtWx44dk/TnBcn79u0r3O4AAAAKyO6ZnDp16ujHH39UpUqV1LhxY02c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1OQ73v71iqomih+LYTjhPjkAAAAnYyYHAACYEiEHAACYEiEHAACYEiEHAACYEiHnOqZNm6aKFSvK09NTjRs31g8//OCwWuvWrVOXLl0UGhoqi8WiL774wmG14uLi1KhRI/n6+qpcuXJ66KGHtG/fPofVk6QZM2aoXr161odyNW3aVMuWLXNozb+aMGGCLBaLhg0b5pDjjx07VhaLxWapUaOGQ2r91e+//64nnnhCAQEB8vLyUt26dbV161aH1KpYsWKe72ixWBQTE+OQejk5ORozZowqVaokLy8vValSRePHj3f4+4QuXLigYcOGKSIiQl5eXmrWrJm2bNlSKMe+2e+5YRh6/fXXFRISIi8vL0VFRenAgQMOrbl48WK1b99eAQEBslgs2rFjh8PqZWdna+TIkapbt668vb0VGhqqp556SseOHXNIPenP380aNWrI29tbpUuXVlRUlDZv3lzgerj9EHKuYeHChRo+fLhiY2O1bds21a9fX9HR0Tp58qRD6mVmZqp+/fqaNm2aQ47/V2vXrlVMTIw2bdqklStXKjs7W+3bt1dmpuNeuFmhQgVNmDBBycnJ2rp1q+6//3517dpVP//8s8NqXrVlyxb961//Ur169Rxap3bt2jp+/Lh12bBhg0PrnTt3Ts2bN1eJEiW0bNky7d69W5MmTVLp0qUdUm/Lli0232/lypWSpEcffdQh9d555x3NmDFDH374ofbs2aN33nlHEydO1AcffOCQelc9/fTTWrlypebOnatdu3apffv2ioqK0u+//37Lx77Z7/nEiRM1depUzZw5U5s3b5a3t7eio6N16dIlh9XMzMxUixYt9M477xS4Rn7rXbx4Udu2bdOYMWO0bds2LV68WPv27dODDz7okHqSdNddd+nDDz/Url27tGHDBlWsWFHt27fXqVOnClwTt5kifXNWMXXvvfcaMTEx1s85OTlGaGioERcX5/DakowlS5Y4vM5VJ0+eNCQZa9eudVpNwzCM0qVLG//+978dWuPChQtGtWrVjJUrVxqtWrUyhg4d6pA6sbGxRv369R1y7OsZOXKk0aJFC6fW/KuhQ4caVapUMXJzcx1y/E6dOhn9+vWzGevWrZvRq1cvh9QzDMO4ePGi4erqanz99dc24w0bNjReffXVQq3199/z3NxcIzg42Hj33XetY+fPnzc8PDyMTz75xCE1/+rQoUOGJGP79u2FUutm9a764YcfDEnGb7/95pR6aWlphiRj1apVt1wPtwdmcv7m8uXLSk5OVlRUlHXMxcVFUVFR2rhxYxF25hhpaWmSpDJlyjilXk5OjhYsWKDMzEw1bdrUobViYmLUqVMnm/8tHeXAgQMKDQ1V5cqV1atXLx05csSh9ZYuXap77rlHjz76qMqVK6e7775b8fHxDq151eXLl/Wf//xH/fr1s+ult/Zo1qyZkpKStH//fknSjz/+qA0bNqhjx44OqSdJV65cUU5OTp73CXl5eTl8Zu7QoUNKTU21+f+qv7+/GjdubMq/d65KS0uTxWJRqVKlHF7r8uXL+uijj+Tv76/69es7vB6Kh9viBZ3OdPr0aeXk5OR5y3lQUJD27t1bRF05Rm5uroYNG6bmzZurTp06Dq21a9cuNW3aVJcuXZKPj4+WLFmiWrVqOazeggULtG3btkK7nuJGGjdurMTERFWvXl3Hjx/XG2+8oZYtW+qnn36Sr6+vQ2r++uuvmjFjhoYPH65XXnlFW7Zs0ZAhQ+Tu7q7evXs7pOZVX3zxhc6fP68+ffo4rMaoUaOUnp6uGjVqyNXVVTk5OXrrrbfUq1cvh9X09fVV06ZNNX78eNWsWVNBQUH65JNPtHHjRlWtWtVhdSUpNTVVkq75987VdWZz6dIljRw5Uo8//rhDX9r59ddfq2fPnrp48aJCQkK0cuVKlS1b1mH1ULwQcu5gMTEx+umnnxz+X6mSVL16de3YsUNpaWn67LPP1Lt3b61du9YhQSclJUVDhw7VypUrnfKW37/OLtSrV0+NGzdWRESEPv30U/Xv398hNXNzc3XPPffo7bffliTdfffd+umnnzRz5kyHh5yEhAR17NhRoaGhDqvx6aefat68eZo/f75q166tHTt2aNiwYQoNDXXo95s7d6769eun8uXLy9XVVQ0bNtTjjz+u5ORkh9W8E2VnZ+uxxx6TYRiaMWOGQ2u1adNGO3bs0OnTpxUfH6/HHntMmzdvVrly5RxaF8UDp6v+pmzZsnJ1ddWJEydsxk+cOKHg4OAi6qrwDRo0SF9//bVWr16tChUqOLyeu7u7qlatqsjISMXFxal+/fqaMmWKQ2olJyfr5MmTatiwodzc3OTm5qa1a9dq6tSpcnNzU05OjkPqXlWqVCnddddd+uWXXxxWIyQkJE9ArFmzpsNPk/32229atWqVnn76aYfWGTFihEaNGqWePXuqbt26evLJJ/XCCy8oLi7OoXWrVKmitWvXKiMjQykpKfrhhx+UnZ2typUrO7Tu1b9bzP73jvR/Aee3337TypUrHTqLI0ne3t6qWrWqmjRpooSEBLm5uSkhIcGhNVF8EHL+xt3dXZGRkUpKSrKO5ebmKikpyeHXkDiDYRgaNGiQlixZom+//VaVKlUqkj5yc3OVlZXlkGO3bdtWu3bt0o4dO6zLPffco169emnHjh1ydXV1SN2rMjIydPDgQYWEhDisRvPmzfPc+r9//35FREQ4rKYkzZ49W+XKlVOnTp0cWufixYtycbH968nV1VW5ubkOrXuVt7e3QkJCdO7cOa1YsUJdu3Z1aL1KlSopODjY5u+d9PR0bd682RR/71x1NeAcOHBAq1atUkBAgNN7cOTfPSh+OF11DcOHD1fv3r11zz336N5779XkyZOVmZmpvn37OqReRkaGzX/1Hzp0SDt27FCZMmUUHh5eqLViYmI0f/58ffnll/L19bWe7/f395eXl1eh1rpq9OjR6tixo8LDw3XhwgXNnz9fa9as0YoVKxxSz9fXN881Rt7e3goICHDItUcvvfSSunTpooiICB07dkyxsbFydXXV448/Xui1rnrhhRfUrFkzvf3223rsscf0ww8/6KOPPtJHH33ksJq5ubmaPXu2evfuLTc3x/7V0aVLF7311lsKDw9X7dq1tX37dr333nvq16+fQ+uuWLFChmGoevXq+uWXXzRixAjVqFGjUH73b/Z7PmzYML355puqVq2aKlWqpDFjxig0NFQPPfSQw2qePXtWR44csT6r5mpwDg4OLtAM0o3qhYSE6JFHHtG2bdv09ddfKycnx/r3T5kyZeTu7l6o9QICAvTWW2/pwQcfVEhIiE6fPq1p06bp999/d9ijD1AMFfHdXcXWBx98YISHhxvu7u7Gvffea2zatMlhtVavXm1IyrP07t270Gtdq44kY/bs2YVe66p+/foZERERhru7uxEYGGi0bdvW+OabbxxW71oceQt5jx49jJCQEMPd3d0oX7680aNHD+OXX35xSK2/+uqrr4w6deoYHh4eRo0aNYyPPvrIofVWrFhhSDL27dvn0DqGYRjp6enG0KFDjfDwcMPT09OoXLmy8eqrrxpZWVkOrbtw4UKjcuXKhru7uxEcHGzExMQY58+fL5Rj3+z3PDc31xgzZowRFBRkeHh4GG3btr3ln/XNas6ePfua62NjYwu93tXb1K+1rF69utDr/fHHH8bDDz9shIaGGu7u7kZISIjx4IMPGj/88EOBauH2ZDEMBz9CFAAAoAhwTQ4AADAlQg4AADAlQg4AADAlQg4AADAlQg4AADAlQg4AADAlQg4AADAlQg4Ap1izZo0sFovOnz9/S8epWLGiJk+eXCg9ATA3Qg5wC1JSUtSvXz+FhobK3d1dERERGjp0qM6cOWOzXevWrWWxWPIsV65cybPew8ND5cuXV5cuXbR48eI8Na9ut2nTJpvxrKwsBQQEyGKxaM2aNdft+dSpU3ruuecUHh4uDw8PBQcHKzo6Wt99992t/0AAoBgh5AAF9Ouvv+qee+7RgQMH9Mknn+iXX37RzJkzrS9zPXv2rM32AwYM0PHjx22Wv74D6ur6gwcP6vPPP1etWrXUs2dPPfPMM3lqh4WFafbs2TZjS5YskY+Pz0377t69u7Zv3645c+Zo//79Wrp0qVq3bp0nmAHA7Y6QAxRQTEyM3N3d9c0336hVq1YKDw9Xx44dtWrVKv3+++969dVXbbYvWbKk9cWH13oB4tX1FSpUUJMmTfTOO+/oX//6l+Lj47Vq1SqbbXv37q0FCxbojz/+sI7NmjVLvXv3vmHP58+f1/r16/XOO++oTZs2ioiI0L333qvRo0frwQcflCT169dPnTt3ttkvOztb5cqVU0JCgqQ/Z54GDx6sYcOGqXTp0goKClJ8fLz1Rba+vr6qWrWqli1blqeH7777TvXq1ZOnp6eaNGmin376yWb9559/rtq1a8vDw0MVK1bUpEmTbvidAOB6CDlAAZw9e1YrVqzQ888/n+ft7cHBwerVq5cWLlyoW301XO/evVW6dOk8p60iIyNVsWJFff7555KkI0eOaN26dXryySdveDwfHx/5+Pjoiy++UFZW1jW3efrpp7V8+XIdP37cOvb111/r4sWL6tGjh3Vszpw5Klu2rH744QcNHjxYzz33nB599FE1a9ZM27ZtU/v27fXkk0/q4sWLNscfMWKEJk2apC1btigwMFBdunRRdna2JCk5OVmPPfaYevbsqV27dmns2LEaM2aMEhMT8/0zA4CrCDlAARw4cECGYahmzZrXXF+zZk2dO3dOp06dso5Nnz7dGjJ8fHz04osv3rSOi4uL7rrrLh0+fDjPun79+mnWrFmSpMTERD3wwAMKDAy84fHc3NyUmJioOXPmqFSpUmrevLleeeUV7dy507pNs2bNVL16dc2dO9c6Nnv2bD366KM2p8Pq16+v1157TdWqVdPo0aPl6empsmXLasCAAapWrZpef/11nTlzxubYkhQbG6t27dqpbt26mjNnjk6cOKElS5ZIkt577z21bdtWY8aM0V133aU+ffpo0KBBevfdd2/6swKAvyPkALfAnpmaXr16aceOHdZl9OjR+a5hsVjyjD/xxBPauHGjfv31VyUmJqpfv375Ol737t117NgxLV26VB06dNCaNWvUsGFDm9mSp59+2nrNz4kTJ7Rs2bI8x69Xr571z66urgoICFDdunWtY0FBQZKkkydP2uzXtGlT65/LlCmj6tWra8+ePZKkPXv2qHnz5jbbN2/eXAcOHFBOTk6+vh8AXEXIAQqgatWqslgs1n+c/27Pnj0qXbq0zcyKv7+/qlatal3Kli170zo5OTk6cOCAKlWqlGddQECAOnfurP79++vSpUvq2LFjvvv39PRUu3btNGbMGH3//ffq06ePYmNjreufeuop/frrr9q4caP+85//qFKlSmrZsqXNMUqUKGHz2WKx2IxdDWa5ubn57gsAChMhByiAgIAAtWvXTtOnT7e5+FeSUlNTNW/ePPXo0eOaMzD2mDNnjs6dO6fu3btfc32/fv20Zs0aPfXUU3J1dS1wnVq1aikzM9P6OSAgQA899JBmz56txMRE9e3bt8DH/ru/3vp+7tw57d+/33rar2bNmnluZf/uu+9011133dL3A3Bncrv5JgCu5cMPP1SzZs0UHR2tN998U5UqVdLPP/+sESNGqHz58nrrrbfsOt7FixeVmpqqK1eu6OjRo1qyZInef/99Pffcc2rTps019+nQoYNOnTolPz+/fNU4c+aMHn30UfXr10/16tWTr6+vtm7dqokTJ6pr16422z799NPq3LmzcnJybnrXlj3GjRungIAABQUF6dVXX1XZsmX10EMPSZJefPFFNWrUSOPHj1ePHj20ceNGffjhh5o+fXqh1Qdw5yDkAAVUrVo1bd26VbGxsXrsscd09uxZBQcH66GHHlJsbKzKlClj1/Hi4+MVHx8vd3d3BQQEKDIyUgsXLtTDDz983X0sFku+Tntd5ePjo8aNG+v999/XwYMHlZ2drbCwMA0YMECvvPKKzbZRUVEKCQlR7dq1FRoaatd3uZEJEyZo6NChOnDggBo0aKCvvvpK7u7ukqSGDRvq008/1euvv67x48crJCRE48aNU58+fQqtPoA7h8W41XtcAZhSRkaGypcvr9mzZ6tbt25F3Q4A2I2ZHAA2cnNzdfr0aU2aNEmlSpWyPiQQAG43hBwANo4cOaJKlSqpQoUKSkxMtHn1BADcTjhdBQAATIlbyAEAgCkRcgAAgCkRcgAAgCkRcgAAgCkRcgAAgCkRcgAAgCkRcgAAgCkRcgAAgCkRcgAAgCn9Pw3E0V3lsR4LAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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NjZWixcv1r/+9a8CHyM1NVXt27eXv7+/vvjiC/n6+t5wn3//+9965ZVXrJ8jIyP122+/Fahe6dKl1apVK7Vq1UrlypXTK6+8opUrV6pv37433NfDwyPfxdJ5eXkqX768Fi1adNV9roSvc+fOqXXr1vLz89PEiRNVtWpVeXp6aseOHRo9erTy8vJs9nN1db3q8a41btzgyRehoaHKzc3ViRMnbALZpUuXdPr0aYWFhV13fwDmQMgBCiA1NVVxcXHq1q2bunXrpry8PC1YsEAjR45U586drTMM13P69Gm1b99e2dnZSk5OVmhoaIFqP/7442rZsqX1c2FnIa5chHvlAYT/nDkpiKpVq2rt2rVq0aLFdftYv369Tp8+rWXLlumee+6xjh86dMjumoXRsGFDSdL27dvVqVMn6/j27duVl5dnXQ/A3LgmByiAoUOHyjAM6xNzXVxcNGfOHJ06dUovvvjiDffPyspSp06d9Mcff+iLL75Q9erVC1y7SpUqio6Oti4tWrS47vbJyclXHf/iiy8k/XW9i/TXLI/016xLQfXs2VO5ubmaNGlSvnWXL1+2HuvKDMzfZ1wuXbqkWbNmFbjWzbjvvvsUEBBgvYPsitmzZ6t06dLq3LmzU/oAULyYyQFuYPny5fr00081depUm2tE7rzzTsXGxurdd99Vv3791Lhx42seo0+fPvruu+80YMAA7d271+bZOD4+PnrggQeKrN9u3bqpcuXK6tq1q6pWraqsrCytXbtWn332mRo3bmx9ro+Xl5dq166tpUuX6o477lBAQIDq1q2runXrXvPYrVu31uDBgxUfH69du3apffv2KlWqlA4cOKAPP/xQ06dP10MPPaTmzZurbNmy6tu3r4YNGyaLxaKFCxfe8DRTUfHy8tKkSZMUGxurhx9+2PrE4//973967bXXFBAQ4JQ+ABSz4r25CygZrnUL+fnz542KFSsaDRs2NC5fvpxvfUZGhhEWFmY0atToquuviIyMtN56/s8lMjKyKL+K8f777xu9e/c2qlatanh5eRmenp5G7dq1jXHjxhkZGRk223777bdGVFSU4e7ubnM7ed++fQ1vb+9r1pg7d64RFRVleHl5Gb6+vka9evWMF154wTh69Kh1m2+++cZo2rSp4eXlZYSFhRkvvPCC9RbwdevWWbdr3bq1UadOnXw1IiMj8z2x2DAMQ5IRGxtboJ/F3LlzjRo1ahju7u5G1apVjbffftvIy8sr0L4Abn28uwoAAJgS1+QAAABTIuQAAABTIuQAAABTIuQAAABTIuQAAABTIuQAAABTMv3DAPPy8nT06FH5+voW6jH2AIDbh2EYOn/+vMLCwvK9u60oXbx48ZovkbWHu7u7PD09i6AjczJ9yDl69Gi+NxkDAHA9qampqlixokOOffHiRUVEROjkyZM3fSw/Pz+FhobKxcVFsbGxio2NLYIOzcP0IefKW57rPLdErh6li7kbx2nd+urvK3KUDRvaOrUeADhDbvYF/Ti1t/XfDke4dOmSTp48qQ0bNsjHx6fQx8nMzFTr1q2VmpoqPz+/IuzQPEwfcq6conL1KC1XT+9i7sZxPLw9nFrPzD9LAHDG5Q0+Pj43FXJwY1x4DAAATImQAwAATImQAwAATImQAwAATImQAwAATMn0d1fdLgYFDXRqvWQdcWo9AADsxUwOAAAwJUIOAAAwJUIOAAAwJUIOAAAwJUIOAAAwJUIOAAAwJW4hN4mEk4lOrhjj5HoAANiHmRwAAGBKhBwAAGBKhBwAAGBKhBwAAGBKhBwAAGBKhBwAAGBKhBwAAGBKPCfHJAYFDXRqvWQdcWo9AADsxUwOAAAwJUIOAAAwJUIOAAAwJUIOAAAwJUIOAAAwJUIOAAAwJUIOAAAwJZ6TYxIJJxOdXDHGyfUAALAPMzkAAMCUCDkAAMCUCDkAAMCUCDkAAMCUCDkAAMCUCDkAAMCUCDkAAMCUeE6OSQwKGujUesk64tR6AADYi5kcAABgSoQcAABgSoQcAABgSoQcAABgSoQcAABgSoQcAABgStxCbhIJJxOdXDHGyfUAALAPMzkAAMCUCDkAAMCUCDkAAMCUCDkAAMCUCDkAAMCUCDkAAMCUCDkAAMCUSsxzciZPnqyxY8dq+PDhmjZtmiTp4sWLeu6557RkyRJlZ2crJiZGs2bNUnBwcPE2WwINChro1HrJOuLUegAA2KtEzORs27ZN//nPf1S/fn2b8WeffVafffaZPvzwQ23YsEFHjx5V9+7di6lLAABwKyn2kJOZmak+ffooISFBZcuWtY6np6crMTFRb731lu677z5FRUVp/vz5+vbbb7Vly5Zi7BgAAFyPxWLRJ598UqTHrFSpkvVMT0EVe8iJjY1V586dFR0dbTOekpKinJwcm/GaNWsqIiJCmzdvvubxsrOzlZGRYbMAAHC769evnywWi5566ql862JjY2WxWNSvXz/nN+ZAxRpylixZoh07dig+Pj7furS0NLm7u6tMmTI248HBwUpLS7vmMePj4+Xv729dwsPDi7ptAABuSeHh4VqyZIn+/PNP69jFixe1ePFiRUREFGNnjlFsISc1NVXDhw/XokWL5OnpWWTHHTt2rNLT061LampqkR0bAIBbWaNGjRQeHq5ly5ZZx5YtW6aIiAjdeeed1rFVq1apZcuWKlOmjAIDA9WlSxcdPHjQuv7SpUsaMmSIQkND5enpqcjIyKtOWFwRFxen0NBQ7d69W5K0adMmtWrVSl5eXgoPD9ewYcOUlZVl3f7EiRPq2rWrvLy8VLlyZS1atKhQ37fYQk5KSopOnDihRo0ayc3NTW5ubtqwYYNmzJghNzc3BQcH69KlSzp37pzNfsePH1dISMg1j+vh4SE/Pz+bBQAA/GXAgAGaP3++9fO8efPUv39/m22ysrI0cuRIbd++XcnJyXJxcdGDDz6ovLw8SdKMGTO0YsUKffDBB9q/f78WLVqkSpUq5atlGIaGDh2q9957T19//bXq16+vgwcPqkOHDurRo4d2796tpUuXatOmTRoyZIh1v379+ik1NVXr1q3TRx99pFmzZunEiRN2f9diu4W8bdu22rNnj81Y//79VbNmTY0ePVrh4eEqVaqUkpOT1aNHD0nS/v37dfjwYTVr1qw4WgYAoMT557WnHh4e8vDwuOb2jz76qMaOHavff/9dkvTNN99oyZIlWr9+vXWbK//uXjFv3jwFBQXpp59+Ut26dXX48GFVr15dLVu2lMViUWRkZL46ly9f1qOPPqqdO3dq06ZNqlChgqS/Livp06ePRowYIUmqXr26ZsyYodatW2v27Nk6fPiwVq5cqe+++06NGzeWJCUmJqpWrVp2/2yKLeT4+vqqbt26NmPe3t4KDAy0jg8cOFAjR45UQECA/Pz8NHToUDVr1kxNmzYtjpZLtISTiU6uGOPkegCAq/nntadxcXGaMGHCNbcPCgpS586dlZSUJMMw1LlzZ5UrV85mmwMHDujll1/W1q1bderUKesMzuHDh1W3bl3169dP7dq1U40aNdShQwd16dJF7du3tznGs88+Kw8PD23ZssXm+N9//712795tcwrKMAzl5eXp0KFD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TImQAwAATImQAwAATImQAwAATKlY765C0RkUNNCp9ZJ1xKn1AACwFzM5AADAlAg5AADAlAg5AADcBvr16yeLxSKLxaJSpUopODhY7dq107x585SXl1fg4yQlJalMmTKOa7QIEXIAALhNdOjQQceOHdNvv/2mlStXqk2bNho+fLi6dOmiy5cvF3d7RY6QAwDAbcLDw0MhISGqUKGCGjVqpBdffFGffvqpVq5cqaSkJEnSW2+9pXr16snb21vh4eF65plnlJmZKUlav369+vfvr/T0dOus0IQJEyRJCxcu1F133SVfX1+FhIToX//6l06cOFFM3/QvhBwAAG5hGRkZNkt2drZd+993331q0KCBli1bJklycXHRjBkz9OOPP2rBggX66quv9MILL0iSmjdvrmnTpsnPz0/Hjh3TsWPH9Pzzz0uScnJyNGnSJH3//ff65JNP9Ntvv6lfv35F+l3txS3kJpFwMtHJFWOcXA8AcDXh4eE2n+Pi4qyzKwVVs2ZN7d69W5I0YsQI63ilSpX06quv6qmnntKsWbPk7u4uf39/WSwWhYSE2BxjwIAB1j9XqVJFM2bMUOPGjZWZmSkfHx/7vlQRIeQAAHALS01NlZ+fn/Wzh4eH3ccwDEMWi0WStHbtWsXHx2vfvn3KyMjQ5cuXdfHiRV24cEGlS5e+5jFSUlI0YcIEff/99zp79qz1YubDhw+rdu3advdUFDhdBQDALczPz89mKUzI2bt3rypXrqzffvtNXbp0Uf369fXxxx8rJSVFM2fOlCRdunTpmvtnZWUpJiZGfn5+WrRokbZt26bly5ffcD9HYyYHAIDb2FdffaU9e/bo2WefVUpKivLy8jR16lS5uPw1D/LBBx/YbO/u7q7c3FybsX379un06dOaPHmy9fTZ9u3bnfMFroOZHAAAbhPZ2dlKS0vTH3/8oR07duj1119Xt27d1KVLFz3++OOqVq2acnJy9M477+jXX3/VwoULNWfOHJtjVKpUSZmZmUpOTtapU6d04cIFRUREyN3d3brfihUrNGnSpGL6lv+HkAMAwG1i1apVCg0NVaVKldShQwetW7dOM2bM0KeffipXV1c1aNBAb731lt544w3VrVtXixYtUnx8vM0xmjdvrqeeekq9evVSUFCQpkyZoqCgICUlJenDDz9U7dq1NXnyZP373/8upm/5fyyGYRjF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hiRjw4YNTqtpGIZRtmxZ47///a9Da5w/f96oXr26sWbNGqN169bG8OHDHVInLi7OaNCggUOOfS2jR482WrZs6dSafzd8+HCjatWqRl5enkOO37lzZ2PAgAE2Y927dzf69OnjkHqGYRgXLlwwXF1djc8//9xmvFGjRsa4ceOKtNY//57n5eUZISEhxptvvmkdO3funOHh4WG8//77Dqn5d4cOHTIkGTt37iySWjeqd8V3331nSDJ+//13p9RLT083JBlr16696Xq4NTCT8w+XLl1SSkqKoqOjrWMuLi6Kjo7W5s2bi7Ezx0hPT5ckBQQEOKVebm6ulixZoqysLDVr1syhtWJjY9W5c2eb/y0d5cCBAwoLC1OVKlXUp08fHT582KH1VqxYobvuuksPP/ywypcvrzvvvFMJCQkOrXnFpUuX9L///U8DBgyw66W39mjevLmSk5P1888/S5K+//57bdq0SR07dnRIPUm6fPmycnNz871PyMvLy+Ezc4cOHVJaWprN/1f9/f3VpEkTU/7euSI9PV0Wi0VlypRxeK1Lly5p7ty58vf3V4MGDRxeDyXDLfGCTmc6deqUcnNz873lPDg4WPv27SumrhwjLy9PI0aMUIsWLVS3bl2H1tqzZ4+aNWumixcvysfHR8uXL1ft2rUdVm/JkiXasWNHkV1PcT1NmjRRUlKSatSooWPHjumVV15Rq1at9MMPP8jX19chNX/99VfNnj1bI0eO1Isvvqht27Zp2LBhcnd3V9++fR1S84pPPvlE586dU79+/RxWY8yYMcrIyFDNmjXl6uqq3Nxcvfbaa+rTp4/Davr6+qpZs2aaNGmSatWqpeDgYL3//vvavHmzqlWr5rC6kpSWliZJV/29c2Wd2Vy8eFGjR4/WI4884tCXdn7++efq3bu3Lly4oNDQUK1Zs0blypVzWD2ULISc21hsbKx++OEHh/9XqiTVqFFDu3btUnp6uj766CP17dtXGzZscEjQSU1N1fDhw7VmzRqnvOX377ML9evXV5MmTRQZGakPPvhAAwcOdEjNvLw83XXXXXr99dclSXfeead++OEHzZkzx+EhJzExUR07dlRYWJjDanzwwQdatGiRFi9erDp16mjXrl0aMWKEwsLCHPr9Fi5cqAEDBqhChQpydXVVo0aN9MgjjyglJcVhNW9HOTk56tmzpwzD0OzZsx1aq02bNtq1a5dOnTqlhIQE9ezZU1u3blX58uUdWhclA6er/qFcuXJydXXV8ePHbcaPHz+ukJCQYuqq6A0ZMkSff/651q1bp4oVKzq8nru7u6pVq6aoqCjFx8erQYMGmj59ukNqpaSk6MSJE2rUqJHc3Nzk5uamDRs2aMaMGXJzc1Nubq5D6l5RpkwZ3XHHHfrll18cViM0NDRfQKxVq5bDT5P9/vvvWrt2rZ544gmH1hk1apTGjBmj3r17q169enrsscf07LPPKj4+3qF1q1atqg0bNigzM1Opqan67rvvlJOToypVqji07pXfLWb/vSP9X8D5/ffftWbNGofO4kiSt7e3qlWrpqZNmyoxMVFubm5KTEx0aE2UHIScf3B3d1dUVJSSk5OtY3l5eUpOTnb4NSTOYBiGhgwZouXLl+urr75S5cqVi6WPvLw8ZWdnO+TYbdu21Z49e7Rr1y7rctddd6lPnz7atWuXXF1dHVL3iszMTB08eFChoaEOq9GiRYt8t/7//PPPioyMdFhNSZo/f77Kly+vzp07O7TOhQsX5OJi++vJ1dVVeXl5Dq17hbe3t0JDQ3X27FmtXr1a3bp1c2i9ypUrKyQkxOb3TkZGhrZu3WqK3ztXXAk4Bw4c0Nq1axUYGOj0Hhz5uwclD6errmLkyJHq27ev7rrrLt19992aNm2asrKy1L9/f4fUy8zMtPmv/kOHDmnXrl0KCAhQREREkdaKjY3V4sWL9emnn8rX19d6vt/f319eXl5FWuuKsWPHqmPHjoqIiND58+e1ePFirV+/XqtXr3ZIPV9f33zXGHl7eyswMNAh1x49//zz6tq1qyIjI3X06FHFxcXJ1dVVjzzySJHXuuLZZ59V8+bN9frrr6tnz5767rvvNHfuXM2dO9dhNfPy8jR//nz17dtXbm6O/dXRtWtXvfbaa4qIiFCdOnW0c+dOvfXWWxowYIBD665evVqGYahGjRr65ZdfNGrUKNWsWbNI/u7f6O/5iBEj9Oqrr6p69eqqXLmyxo8fr7CwMD3wwAMOq3nmzBkdPnzY+qyaK8E5JCSkUDNI16sXGhqqhx56SDt27NDnn3+u3Nxc6++fgIAAubu7F2m9wMBAvfbaa7r//vsVGhqqU6dOaebMmfrjjz8c9ugDlEDFfHdXifXOO+8YERERhru7u3H33XcbW7ZscVitdevWGZLyLX379i3yWlerI8mYP39+kde6YsCAAUZkZKTh7u5uBAUFGW3btjW+/PJLh9W7GkfeQt6rVy8jNDTUcHd3NypUqGD06tXL+OWXXxxS6+8+++wzo27duoaHh4dRs2ZNY+7cuQ6tt3r1akOSsX//fofWMQzDyMjIMIYPH25EREQYnp6eRpUqVYxx48YZ2dnZDq27dOlSo0qVKoa7u7sREhJixMbGGufOnSuSY9/o73leXp4xfvx4Izg42PDw8DDatm170z/rG9WcP3/+VdfHxcUVeb0rt6lfbVm3bl2R1/vzzz+NBx980AgLCzPc3d2N0NBQ4/777ze+++67QtXCrcliGA5+hCgAAEAx4JocAABgSoQcAABgSoQcAABgSoQcAABgSoQcAABgSoQcAABgSoQcAABgSoQcAE6xfv16WSwWnTt37qaOU6lSJU2bNq1IegJgboQc4CakpqZqwIABCgsLk7u7uyIjIzV8+HCdPn3aZrt7771XFosl33L58uV86z08PFShQgV17dpVy5Yty1fzynZbtmyxGc/OzlZgYKAsFovWr19/zZ5Pnjypp59+WhEREfLw8FBISIhiYmL0zTff3PwPBABKEEIOUEi//vqr7rrrLh04cEDvv/++fvnlF82ZM8f6MtczZ87YbD9o0CAdO3bMZvn7O6CurD948KA+/vhj1a5dW71799aTTz6Zr3Z4eLjmz59vM7Z8+XL5+PjcsO8ePXpo586dWrBggX7++WetWLFC9957b75gBgC3OkIOUEixsbFyd3fXl19+qdatWysiIkIdO3bU2rVr9ccff2jcuHE225cuXdr64sOrvQDxyvqKFSuqadOmeuONN/Sf//xHCQkJWrt2rc22ffv21ZIlS/Tnn39ax+bNm6e+fftet+dz587p66+/1htvvKE2bdooMjJSd999t8aOHav7779fkjRgwAB16dLFZr+cnByVL19eiYmJkv6aeRo6dKhGjBihsmXLKjg4WAkJCdYX2fr6+qpatWpauXJlvh6++eYb1a9fX56enmratKl++OEHm/Uff/yx6tSpIw8PD1WqVElTp0697ncCgGsh5ACFcObMGa1evVrPPPNMvre3h4SEqE+fPlq6dKlu9tVwffv2VdmyZfOdtoqKilKlSpX08ccfS5IOHz6sjRs36rHHHrvu8Xx8fOTj46NPPvlE2dnZV93miSee0KpVq3Ts2DHr2Oeff64LFy6oV69e1rEFCxaoXLly+u677zR06FA9/fTTevjhh9W8eXPt2LFD7du312OPPaYLFy7YHH/UqFGaOnWqtm3bpqCgIHXt2lU5OTmSpJSUFPXs2VO9e/fWnj17NGHCBI0fP15JSUkF/pkBwBWEHKAQDhw4IMMwVKtWrauur1Wrls6ePauTJ09ax2bNmmUNGT4+PnruueduWMfFxUV33HGHfvvtt3zrBgwYoHnz5kmSkpKS1KlTJwUFBV33eG5ubkpKStKCBQtUpkwZtWjRQi+++KJ2795t3aZ58+aqUaOGFi5caB2bP3++Hn74YZvTYQ0aNNBLL72k6tWra+zYsfL09FS5cuU0aNAgVa9eXS+//LJOnz5tc2xJiouLU7t27VSvXj0tWLBAx48f1/LlyyVJb731ltq2bavx48frjjvuUL9+/TRkyBC9+eabN/xZAcA/EXKAm2DPTE2fPn20a9cu6zJ27NgC17BYLPnGH330UW3evFm//vqrkpKSNGDAgAIdr0ePHjp69KhWrFihDh06aP369WrUqJHNbMkTTzxhvebn+PHjWrlyZb7j169f3/pnV1dXBQYGql69etax4OBgSdKJEyds9mvWrJn1zwEBAapRo4b27t0rSdq7d69atGhhs32LFi104MAB5ebmFuj7AcAVhBygEKpVqyaLxWL9x/mf9u7dq7Jly9rMrPj7+6tatWrWpVy5cjesk5ubqwMHDqhy5cr51gUGBqpLly4aOHCgLl68qI4dOxa4f09PT7Vr107jx4/Xt99+q379+ikuLs66/vHHH9evv/6qzZs363//+58qV66sVq1a2RyjVKlSNp8tFovN2JVglpeXV+C+AKAoEXKAQggMDFS7du00a9Ysm4t/JSktLU2LFi1Sr169rjoDY48FCxbo7Nmz6tGjx1XXDxgwQOvXr9fjjz8uV1fXQtepXbu2srKyrJ8DAwP1wAMPaP78+UpKSlL//v0Lfex/+vut72fPntXPP/9sPe1Xq1atfLeyf/PNN7rjjjtu6vsBuD253XgTAFfz7rvvqnnz5oqJidGrr76qypUr68cff9SoUaNUoUIFvfbaa3Yd78KFC0pLS9Ply5d15MgRLV++XG+//baefvpptWnT5qr7dOjQQSdPnpSfn1+Bapw+fVoPP/ywBgwYoPr168vX11fbt2/XlClT1K1bN5ttn3jiCXXp0kW5ubk3vGvLHhMnTlRgYKCCg4M1btw4lStXTg888IAk6bnnnlPjxo01adIk9erVS5s3b9a7776rWbNmFVl9ALcPQg5QSNWrV9f27dsVFxennj176syZMwoJCdEDDzyguLg4BQQE2HW8hIQEJSQkyN3dXYGBgYqKitLSpUv14IMPXnMfi8VSoNNeV/j4+KhJkyZ6++23dfDgQeXk5Cg8PFyDBg3Siy++aLNtdHS0QkNDVadOHYWFhdn1Xa5n8uTJGj58uA4cOKCGDRvqs88+k7u7uySpUaNG+uCDD/Tyyy9r0qRJCg0N1cSJE9WvX78iqw/g9mExbvYeVwCmlJmZqQoVKmj+/Pnq3r17cbcDAHZjJgeAjby8PJ06dUpTp05VmTJlrA8JBIBbDSEHgI3Dhw+rcuXKqlixopKSkmxePQEAtxJOVwEAAFPiFnIAAGBKhBwAAGBKhBwAAGBKhBwAAGBKhBwAAGBKhBwAAGBKhBwAAGBKhBwAAGBKhBwAAGBK/x8ixP+61Lp6jQAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjkAAAHHCAYAAABdm0mZAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAR4BJREFUeJzt3Xt8z/X///H7e5sd7ISZHdjmmGPIknOSMXIqKvqoDEk1p5Sk0kQ1KYWcPvYZk4gOlHw+EsshhRiiA0nKxJxtNmyzvX5/9PP+9m4Oe8/e783L7Xq5vC6XvZ+vw+Px3ueDe8/XyWIYhiEAAACTcSnpBgAAAByBkAMAAEyJkAMAAEyJkAMAAEyJkAMAAEyJkAMAAEyJkAMAAEyJkAMAAEyJkAMAAEyJkAMAAEyJkIObksViKdSybt06/ec//5HFYtH8+fMLHGfTpk1ycXHRs88+e9V6GzZsUPfu3RUWFiZPT08FBwerU6dO+uabbxzy/TZu3KjOnTurcuXK8vT0VHh4uLp166ZFixZZtzl37pzGjRundevWOaSH0iAxMVF169aVp6enatWqpXfffbekWwLgRBbeXYWb0fvvv2/z+b333tPq1au1YMECm/EOHTqoUqVKuvPOO7Vnzx7t2bNHAQEBkqTc3Fw1adJEGRkZ+umnn+Tt7X3Fev/5z3+0YsUKNW3aVMHBwTp9+rTef/997d69W//973/VqVOnYvtuH330kXr37q3GjRurT58+Kl++vA4cOKANGzaoTJkyWrt2rSTpxIkTCgwMVFxcnMaNG1ds9UuLf//733riiSfUq1cvRUdH6+uvv9aCBQs0ceJEjR49uqTbA+AMBgAjNjbWuNofhx9//NEoU6aMERMTYx2Lj483JBnLly8vUs2srCwjKCjIiI6OLtL+V1KvXj2jfv36RnZ2doF1R48etf58/PhxQ5IRFxdXqONmZmYWV4sOd+7cOSMgIMDo0qWLzXjfvn0Nb29v49SpUyXUGQBn4nQVUAj16tXTqFGjlJSUpPXr1+vAgQMaP368evbsqW7duhXpmGXLllVgYKDOnDlTrL3u379fTZs2lbu7e4F1lSpVkiT9/vvvCgwMlCS98sor1tNzl2Z0YmJi5OPjo/379+uee+6Rr6+v+vbtK0nKz8/XlClTVL9+fXl6eiooKEiDBw/W6dOnbWp99tln6tKli0JDQ+Xh4aEaNWpowoQJysvLs9nurrvuUoMGDbRr1y61bdtWZcuWVc2aNfXxxx9LktavX69mzZrJy8tLtWvX1po1a675O1i7dq1Onjypp556ymY8NjZWWVlZ+u9//1uI3ySAGx0hByikl156SdWrV9fgwYP1xBNPyM3NTdOmTbPrGBkZGTpx4oT27NmjF154QT/88IPat29frH1GREQoOTlZhw4duuI2gYGBmjVrliTpvvvu04IFC7RgwQL17NnTus3FixcVHR2tSpUq6a233lKvXr0kSYMHD9aoUaPUqlUrTZ06Vf3799fChQsVHR2t3Nxc6/5JSUny8fHRyJEjNXXqVEVGRurll1/W888/X6Cf06dPq2vXrmrWrJkmTZokDw8P9enTR0uWLFGfPn10zz33aOLEicrKytL999+vs2fPXvV3sGPHDknS7bffbjMeGRkpFxcX63oAJlfSU0lAaXCt01WXrFq1ypBkSDKmTJlid53o6Gjr/u7u7sbgwYON8+fPF6XlK0pMTLQev127dsbYsWONr7/+2sjLy7PZ7mqnq/r162dIMp5//nmb8a+//tqQZCxcuNBm/Isvvigwfu7cuQLHHTx4sFG2bFnjwoUL1rG2bdsakoxFixZZx/bs2WNIMlxcXIzNmzdbxy/9/ufNm3fV30FsbKzh6up62XWBgYFGnz59rro/AHNgJgewQ4UKFeTi8tcfm44dO9q9/8SJE/Xll18qMTFRzZs3V05Oji5evFisPQ4YMEBffPGF7rrrLm3cuFETJkxQmzZtVKtWLX377bd2HevJJ5+0+fzRRx/J399fHTp00IkTJ6xLZGSkfHx8rBc1S5KXl5f157Nnz+rEiRNq06aNzp07pz179tgc18fHR3369LF+rl27tsqVK6e6deuqWbNm1vFLP//2229X7fv8+fOXPV0nSZ6enjp//vw1vjkAM3Ar6QaAG0VeXp4ef/xxhYaGKjMzU8OGDdPq1avtOkbjxo2tPz/88MNq0qSJYmJirNefXE5mZqYyMzOtn11dXa3X01xJdHS0oqOjde7cOaWkpGjJkiWaPXu2unbtqj179livzbkaNzc3ValSxWZs3759Sk9Pv+L+x44ds/78448/6qWXXtJXX32ljIwMm+3S09NtPlepUkUWi8VmzN/fX2FhYQXGJBW4/uefvLy8lJOTc9l1Fy5csAlgAMyL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zee4uDjrTMqVGIah5ORkrVq1SkOHDtXx48evuO2lcPPNN9+oZcuWkqSFCxcqLCxMn376qR544AH5+/vLYrEoODjYut/Bgwfl7e2trl27ytfXVxEREbrtttuK/kWLoFAhZ9q0aXr88cfl6empadOmXXXbYcOGFUtjAADg2lJTU+Xn52f9fLVZnBUrVsjHx0e5ubnKz8/Xv/71L40bN06xsbFX3Ofnn3+Wm5ubmjVrZh0LCAhQ7dq19fPPP19xvw4dOigiIkLVq1dXp06d1KlTJ913330qW7asnd+w6AoVct555x317dtXnp6eeuedd664ncViIeQAAOBEfn5+NiHnatq1a6dZs2bJ3d1doaGhcnMr8gmda/L19dX27du1bt06ffnll3r55Zc1btw4bd261WkXORfq2x04cOCyPwMAgBuHt7e3atasadc+devW1cWLF7Vlyxbr6aqTJ09q7969qlevniTJ3d1deXl5BfZ1c3NTVFSUoqKiFBcXp3Llyumrr75Sz549r//LFIJdd1fl5uaqRo0aV52eAgAA5lGrVi316NFDgwYN0saNG/X999/r4YcfVuXKldWjRw9JUtWqVZWZmank5GSdOHFC586d04oVKzRt2jTt3LlTf/zxh9577z3l5+erdu3aTuvdrpBTpkwZXbhwwVG9AACAUmjevHmKjIxU165d1aJFCxmGof/9738qU6aMJKlly5Z64okn1Lt3bwUGBmrSpEkqV66cli5dqrvvvlt169bV7Nmz9cEHH6h+/fpO69tiGIZhzw6vv/66fvnlF/3nP/9x6Lm84pKRkSF/f381fGG5XD29S7odh2l/9yqn1kv+irurAJhP3oUs7Xq9u9LT0wt9nYu9Lv27NHTVcHl4F+5W78vJzsrWu9FTHdrrjc7ulLJ161YlJyfryy+/1K233ipvb9vgsHTp0mJrDgAAoKjsDjnlypXj9Q2l0KDAgU6tl6xDTq0HAIC97Ao5Fy9eVLt27dSxY0ebB/4AAACUNnZdeOzm5qYnnnhC2dnZjuoHAACgWNj9gs477rhDO3bscEQvAAAAxcbua3KeeuopPfPMMzp06JAiIyMLXHjcsGHDYmsOAACgqOwOOX369JFk+44qi8UiwzBksVgu+8RDAAAAZ7M75PBaBwAAcCOwO+REREQ4og9cp4TjiU6uyMMAAQClW5EfWfzTTz/p4MGDysnJsRnv3r37dTcFAABwvewOOb/99pvuu+8+7d6923otjvTXdTmSuCYHAACUCnbfQj58+HBVq1ZNx44dU9myZfXjjz9qw4YNuv3227Vu3ToHtAgAAGA/u2dyNm3apK+++koVK1aUi4uLXFxc1Lp1a8XHx2vYsGE8QwcAAJQKds/k5OXlydfXV5JUsWJFHT58WNJfFyTv3bu3eLsDAAAoIrtncho0aKDvv/9e1apVU7NmzTRp0iS5u7trzpw5ql69uiN6BAAAsJvdIeell15SVlaWJGn8+PHq2rWr2rRpo4CAAC1ZsqTYGwQAACgKu0NOdPT/PR+lZs2a2rNnj06dOqXy5ctb77AqrPj4eC1dulR79uyRl5eXWrZsqTfeeEO1a9e2bnPhwgU988wzWrx4sbKzsxUdHa2ZM2cqKCjI3tZNbVDgQKfWS9Yhp9YDAMBedl+Tk56erlOnTtmMVahQQadPn1ZGRoZdx1q/fr1iY2O1efNmrV69Wrm5uerYsaN1pkiSnn76aX3++ef66KOPtH79eh0+fFg9e/a0t20AAHCTKdK7q7p166annnrKZvzDDz/U8uXL9b///a/Qx/riiy9sPiclJalSpUpKSUnRnXfeqfT0dCUmJmrRokW6++67JUnz5s1T3bp1tXnzZjVv3tze9gEAwE3C7pmcLVu2qF27dgXG77rrLm3ZsuW6mklPT5f018yQJKWkpCg3N1dRUVHWberUqaPw8HBt2rTpssfIzs5WRkaGzQIAAG4+doec7OxsXbx4scB4bm6uzp8/X+RG8vPzNWLECLVq1UoNGjSQJKWlpcnd3V3lypWz2TYoKEhpaWmXPU58fLz8/f2tS1hYWJF7AgAANy67Q84dd9yhOXPmFBifPXu2IiMji9xIbGysfvjhBy1evLjIx5CkMWPGKD093bqkpqZe1/EAAMCNye5rcl599VVFRUXp+++/V/v27SVJycnJ2rp1q7788ssiNTFkyBCtWLFCGzZsUJUqVazjwcHBysnJ0ZkzZ2xmc44eParg4ODLHsvDw0MeHh5F6gMAAJiH3TM5rVq10qZNm1SlShV9+OGH+vzzz1WzZk3t2rVLbdq0setYhmFoyJAhWrZsmb766itVq1bNZn1kZKTKlCmj5ORk69jevXt18OBBtWjRwt7WAQDATcTumRxJaty4sRYtWnTdxWNjY7Vo0SJ99tln8vX1tV5n4+/vLy8vL/n7+2vgwIEaOXKkKlSoID8/Pw0dOlQtWrTgzqp/SDie6OSK0dfeBACAElSkkJOXl6dly5bp559/liTVq1dPPXr0kJubfYebNWuWpL/uzPq7efPmKSYmRpL0zjvvyMXFRb169bJ5GCAAAMDV2B1yfvzxR3Xv3l1paWnWJxO/8cYbCgwM1Oeff269M6owDMO45jaenp6aMWOGZsyYYW+rAADgJmb3NTmPPfaY6tevr0OHDmn79u3avn27UlNT1bBhQz3++OOO6BEAAMBuds/k7Ny5U9u2bVP58uWtY+XLl9drr72mpk2bFmtzAAAARWX3TM4tt9yio0ePFhg/duyYatasWSxNAQAAXK9ChZy/vyIhPj5ew4YN08cff6xDhw7p0KFD+vjjjzVixAi98cYbju4XAACgUAp1uqpcuXKyWCzWz4Zh6MEHH7SOXbqAuFu3bsrLy3NAmwAAAPYpVMhZu3ato/vAdRoUONCp9ZJ1yKn1AACwV6FCTtu2bR3dBwAAQLGy++6qDRs2XHX9nXfeWeRmAAAAiovdIeefTyeWZHO9DtfkAACA0sDuW8hPnz5tsxw7dkxffPGFmjZtWuS3kAMAABQ3u2dy/P39C4x16NBB7u7uGjlypFJSUoqlMQAAgOth90zOlQQFBWnv3r3FdTgAAIDrYvdMzq5du2w+G4ahI0eOaOLEiWrcuHFx9QU7JRxPdHLFaCfXAwDAPnaHnMaNG8tisRR4g3jz5s01d+7cYmsMAADgetgdcg4cOGDz2cXFRYGBgfL09Cy2pgAAAK6X3SEnIiLCEX0AAAAUq0JfeLxp0yatWLHCZuy9995TtWrVVKlSJT3++OPKzs4u9gYBAACKotAhZ/z48frxxx+tn3fv3q2BAwcqKipKzz//vD7//HPFx8c7pEkAAAB7FTrk7Ny5U+3bt7d+Xrx4sZo1a6aEhASNHDlS06ZN04cffuiQJgEAAOxV6JBz+vRpBQUFWT+vX79enTt3tn5u2rSpUlNTi7c7AACAIir0hcdBQUE6cOCAwsLClJOTo+3bt+uVV16xrj979qzKlCnjkCZxbYMCBzq1XrIOObUeAAD2KvRMzj333KPnn39eX3/9tcaMGaOyZcuqTZs21vW7du1SjRo1HNIkAACAvQo9kzNhwgT17NlTbdu2lY+Pj+bPny93d3fr+rlz56pjx44OaRIAAMBehQ45FStW1IYNG5Seni4fHx+5urrarP/oo4/k4+NT7A0CAAAURbG8hVySKlSocN3NAAAAFJdiews5AABAaULIAQAApkTIAQAApmT3NTkonRKOJzq5YrST6wGAuaxf316unt5F3j/vQpakqWratKlcXV0VGxur2NjY4mvQBAg5AADcwLZu3So/P7+SbqNU4nQVAAAwJUIOAAAwJUIOAAAwJUIOAAAwJUIOAAAwJe6uMolBgQOdWi9Zh5xaDwAAezGTAwAATImQAwAATImQAwAATImQAwAATImQAwAATImQAwAATImQAwAATInn5JhEwvFEJ1eMdnI9AADsw0wOAAAwJUIOAAAwJUIOAAAwJUIOAAAwJUIOAAAwJUIOAAAwJUIOAAAwJZ6TYxKDAgc6tV6yDjm1HgAA9mImBwAAmBIhBwAAmBIhBwAAmBIhBwAAmBIhBwAAmBIhBwAAmBIhBwAAmBLPyTGJhOOJTq4Y7eR6AADYh5kcAABgSoQcAABgSoQcAABgSoQcAABgSoQcAABgSoQcAABgSiV6C/mGDRv05ptvKiUlRUeOHNGyZct07733WtcbhqG4uDglJCTozJkzatWqlWbNmqVatWqVXNOl1KDAgU6tl6xDTq0HAIC9SnQmJysrS40aNdKMGTMuu37SpEmaNm2aZs+erS1btsjb21vR0dG6cOGCkzsFAAA3mhKdyencubM6d+582XWGYWjKlCl66aWX1KNHD0nSe++9p6CgIH366afq06ePM1sFAAA3mFJ7Tc6BAweUlpamqKgo65i/v7+aNWumTZs2XXG/7OxsZWRk2CwAAODmU2pDTlpamiQpKCjIZjwoKMi67nLi4+Pl7+9vXcLCwhzaJwAAKJ1KbcgpqjFjxig9Pd26pKamlnRLAACgBJTakBMcHCxJOnr0qM340aNHresux8PDQ35+fjYLAAC4+ZTakFOtWjUFBwcrOTnZOpaRkaEtW7aoRYsWJdgZAAC4EZTo3VWZmZn69ddfrZ8PHDignTt3qkKFCgoPD9eIESP06quvqlatWqpWrZrGjh2r0NBQm2fp4C8JxxOdXDHayfUAALBPiYacbdu2qV27dtbPI0eOlCT169dPSUlJeu6555SVlaXHH39cZ86cUevWrfXFF1/I09OzpFoGAAA3iBINOXfddZcMw7jieovFovHjx2v8+PFO7AoAAJhBqb0mBwAA4HoQcgAAgCkRcgAAgCkRcgAAgCkRcgAAgCmV6N1VKD6DAgc6tV6yDjm1HgAA9mImBwAAmBIhBwAAmBIhBwCAm0BMTIwsFossFovKlCmjoKAgdejQQXPnzlV+fn6hj5OUlKRy5co5rtFiRMgBAOAm0alTJx05ckS///67Vq5cqXbt2mn48OHq2rWrLl68WNLtFTtCDgAANwkPDw8FBwercuXKatKkiV544QV99tlnWrlypZKSkiRJb7/9tm699VZ5e3srLCxMTz31lDIzMyVJ69atU//+/ZWenm6dFRo3bpwkacGCBbr99tvl6+ur4OBg/etf/9KxY8dK6Jv+hZADAMANLCMjw2bJzs62a/+7775bjRo10tKlSyVJLi4umjZtmn788UfNnz9fX331lZ577jlJUsuWLTVlyhT5+fnpyJEjOnLkiJ599llJUm5uriZMmKDvv/9en376qX7//XfFxMQU63e1F7eQm0TC8UQnV4x2cj0AwOWEhYXZfI6Li7POrhRWnTp1tGvXLknSiBEjrONVq1bVq6++qieeeEIzZ86Uu7u7/P39ZbFYFBwcbHOMAQMGWH+uXr26pk2bpqZNmyozM1M+Pj72faliQsgBAOAGlpqaKj8/P+tnDw8Pu49hGIYsFoskac2aNYqPj9eePXuUkZGhixcv6sKFCzp37pzKli17xWOkpKRo3Lhx+v7773X69GnrxcwHDx5UvXr17O6pOHC6CgCAG5ifn5/NUpSQ8/PPP6tatWr6/fff1bVrVzVs2FCffPKJUlJSNGPGDElSTk7OFffPyspSdHS0/Pz8tHDhQm3dulXLli275n6OxkwOAAA3sa+++kq7d+/W008/rZSUFOXn52vy5MlycflrHuTDDz+02d7d3V15eXk2Y3v27NHJkyc1ceJE6+mzbdu2OecLXAUzOQAA3CSys7OVlpamP//8U9u3b9frr7+uHj16qGvXrnr00UdVs2ZN5ebm6t1339Vvv/2mBQsWaPbs2TbHqFq1qjIzM5WcnKwTJ07o3LlzCg8Pl7u7u3W/5cuXa8KECSX0Lf8PIQcAgJvEF198oZCQEFWtWlWdOnXS2rVrNW3aNH322WdydXVVo0aN9Pbbb+uNN95QgwYNtHDhQsXHx9sco2XLlnriiSfUu3dvBQYGatKkSQoMDFRSUpI++ugj1atXTxMnTtRbb71VQt/y/1gMwzBKuglHysjIkL+/vxq+sFyunt4l3Y7DtL97lVPrJX/F3VUAzCfvQpZ2vd5d6enpNhfzFqfi+nfJGb3e6JjJAQAApsSFxyYxKHCgU+sl65BT6wEAYC9mcgAAgCkRcgAAgCkRcgAAgCkRcgAAgCkRcgAAgCkRcgAAgCkRcgAAgCnxnByTSDie6OSKPPEYAFC6MZMDAABMiZADAABMiZADAABMiZADAABMiZADAABMiZADAABMiVvITWJQ4ECn1kvWIafWAwDAXszkAAAAUyLkAAAAUyLkAAAAUyLkAAAAUyLkAAAAUyLkAAAAUyLkAAAAU+I5OSaRcDzRyRWjnVwPAAD7MJMDAABMiZADAABMiZADAABMiZADAABMiZADAABMiZADAABMiZADAABMiefkmMSgwIFOrZesQ06tBwCAvZjJAQAApkTIAQAApkTIAQAApkTIAQAApkTIAQAApkTIAQAApkTIAQAApsRzckwi4XiikytGO7keAAD2YSYHAACYEiEHAACYEiEHAACYEiEHAACYEiEHAACYEiEHAACY0g1xC/mMGTP05ptvKi0tTY0aNdK7776rO+64o6TbKlUGBQ50ar1kHXJqPQAA7FXqZ3KWLFmikSNHKi4uTtu3b1ejRo0UHR2tY8eOlXRrAACgFCv1Ieftt9/WoEGD1L9/f9WrV0+zZ89W2bJlNXfu3JJuDQAAlGKlOuTk5OQoJSVFUVFR1jEXFxdFRUVp06ZNl90nOztbGRkZNgsAALj5lOqQc+LECeXl5SkoKMhmPCgoSGlpaZfdJz4+Xv7+/tYlLCzMGa0CAIBSplSHnKIYM2aM0tPTrUtqampJtwQAAEpAqb67qmLFinJ1ddXRo0dtxo8eParg4ODL7uPh4SEPDw9ntAcAAEqxUh1y3N3dFRkZqeTkZN17772SpPz8fCUnJ2vIkCGFOoZhGJKkvOxzjmqzVMjMzHRqvbwLWU6tBwDOcOnfikv/djijVkntf1MwSrnFixcbHh4eRlJSkvHTTz8Zjz/+uFGuXDkjLS2tUPunpqYaklhYWFhYWAq9pKamOuzftfPnzxvBwcHF0qefn59Ru3Zto27dusb06dMd1vONqlTP5EhS7969dfz4cb388stKS0tT48aN9cUXXxS4GPlKQkNDlZqaKl9fX1kslkLXzcjIUFhYmFJTU+Xn51fU9kttvZKoafZ6JVHT7PVKoibf8cavdz01DcPQ2bNnFRoa6rDePD09deDAAeXk5Fz3sdzd3eXp6VkMXZlTqQ85kjRkyJBCn576JxcXF1WpUqXItf38/Jz2h7Ik6pVETbPXK4maZq9XEjX5jjd+vaLW9Pf3d1A3/8fT05Nw4gSmu7sKAABAIuQAAACTIuRcgYeHh+Li4px2O7qz65VETbPXK4maZq9XEjX5jjd+vZKqidLHYhhOuE8OAADAyZjJAQAApkTIAQAApkTIAQAApkTIAQAApkTIuYIZM2aoatWq8vT0VLNmzfTdd985rNaGDRvUrVs3hYaGymKx6NNPP3VYrfj4eDVt2lS+vr6qVKmS7r33Xu3du9dh9SRp1qxZatiwofWhXC1atNDKlSsdWvPvJk6cKIvFohEjRjjk+OPGjZPFYrFZ6tSp45Baf/fnn3/q4YcfVkBAgLy8vHTrrbdq27ZtDqlVtWrVAt/RYrEoNjbWIfXy8vI0duxYVatWTV5eXqpRo4YmTJjg8PcJnT17ViNGjFBERIS8vLzUsmVLbd26tViOfa0/54Zh6OWXX1ZISIi8vLwUFRWlffv2ObTm0qVL1bFjRwUEBMhisWjnzp0Oq5ebm6vRo0fr1ltvlbe3t0JDQ/Xoo4/q8OHDDqkn/fVns06dOvL29lb58uUVFRWlLVu2FLkebjyEnMtYsmSJRo4cqbi4OG3fvl2NGjVSdHS0jh075pB6WVlZatSokWbMmOGQ4//d+vXrFRsbq82bN2v16tXKzc1Vx44dlZXluBduVqlSRRMnTlRKSoq2bdumu+++Wz169NCPP/7osJqXbN26Vf/+97/VsGFDh9apX7++jhw5Yl02btzo0HqnT59Wq1atVKZMGa1cuVI//fSTJk+erPLlyzuk3tatW22+3+rVqyVJDzzwgEPqvfHGG5o1a5amT5+un3/+WW+88YYmTZqkd9991yH1Lnnssce0evVqLViwQLt371bHjh0VFRWlP//887qPfa0/55MmTdK0adM0e/ZsbdmyRd7e3oqOjtaFCxccVjMrK0utW7fWG2+8UeQaha137tw5bd++XWPHjtX27du1dOlS7d27V927d3dIPUm65ZZbNH36dO3evVsbN25U1apV1bFjRx0/frzINXGDKdE3Z5VSd9xxhxEbG2v9nJeXZ4SGhhrx8fEOry3JWLZsmcPrXHLs2DFDkrF+/Xqn1TQMwyhfvrzxn//8x6E1zp49a9SqVctYvXq10bZtW2P48OEOqRMXF2c0atTIIce+ktGjRxutW7d2as2/Gz58uFGjRg0jPz/fIcfv0qWLMWDAAJuxnj17Gn379nVIPcMwjHPnzhmurq7GihUrbMabNGlivPjii8Va659/zvPz843g4GDjzTfftI6dOXPG8PDwMD744AOH1Py7AwcOGJKMHTt2FEuta9W75LvvvjMkGX/88YdT6qWnpxuSjDVr1lx3PdwYmMn5h5ycHKWkpCgqKso65uLioqioKG3atKkEO3OM9PR0SVKFChWcUi8vL0+LFy9WVlaWWrRo4dBasbGx6tKli83/lo6yb98+hYaGqnr16urbt68OHjzo0HrLly/X7bffrgceeECVKlXSbbfdpoSEBIfWvCQnJ0fvv/++BgwYYNdLb+3RsmVLJScn65dffpEkff/999q4caM6d+7skHqSdPHiReXl5RV4n5CXl5fDZ+YOHDigtLQ0m/+v+vv7q1mzZqb8e+eS9PR0WSwWlStXzuG1cnJyNGfOHPn7+6tRo0YOr4fS4YZ4QacznThxQnl5eQXech4UFKQ9e/aUUFeOkZ+frxEjRqhVq1Zq0KCBQ2vt3r1bLVq00IULF+Tj46Nly5apXr16Dqu3ePFibd++vdiup7iaZs2aKSkpSbVr19aRI0f0yiuvqE2bNvrhhx/k6+vrkJq//fabZs2apZEjR+qFF17Q1q1bNWzYMLm7u6tfv34OqXnJp59+qjNnzigmJsZhNZ5//nllZGSoTp06cnV1VV5enl577TX17dvXYTV9fX3VokULTZgwQXXr1lVQUJA++OADbdq0STVr1nRYXUlKS0uTpMv+vXNpndlcuHBBo0eP1kMPPeTQl3auWLFCffr00blz5xQSEqLVq1erYsWKDquH0oWQcxOLjY3VDz/84PD/SpWk2rVra+fOnUpPT9fHH3+sfv36af369Q4JOqmpqRo+fLhWr17tlLf8/n12oWHDhmrWrJkiIiL04YcfauDAgQ6pmZ+fr9tvv12vv/66JOm2227TDz/8oNmzZzs85CQmJqpz584KDQ11WI0PP/xQCxcu1KJFi1S/fn3t3LlTI0aMUGhoqEO/34IFCzRgwABVrlxZrq6uatKkiR566CGlpKQ4rObNKDc3Vw8++KAMw9CsWbMcWqtdu3bauXOnTpw4oYSEBD344IPasmWLKlWq5NC6KB04XfUPFStWlKurq44ePWozfvToUQUHB5dQV8VvyJAhWrFihdauXasqVao4vJ67u7tq1qypyMhIxcfHq1GjRpo6dapDaqWkpOjYsWNq0qSJ3Nzc5ObmpvXr12vatGlyc3NTXl6eQ+peUq5cOd1yyy369ddfHVYjJCSkQECsW7euw0+T/fHHH1qzZo0ee+wxh9YZNWqUnn/+efXp00e33nqrHnnkET399NOKj493aN0aNWpo/fr1yszMVGpqqr777jvl5uaqevXqDq176e8Ws/+9I/1fwPnjjz+0evVqh87iSJK3t7dq1qyp5s2bKzExUW5ubkpMTHRoTZQehJx/cHd3V2RkpJKTk61j+fn5Sk5Odvg1JM5gGIaGDBmiZcuW6auvvlK1atVKpI/8/HxlZ2c75Njt27fX7t27tXPnTuty++23q2/fvtq5c6dcXV0dUveSzMxM7d+/XyEhIQ6r0apVqwK3/v/yyy+KiIhwWE1JmjdvnipVqqQuXbo4tM65c+fk4mL715Orq6vy8/MdWvcSb29vhYSE6PTp01q1apV69Ojh0HrVqlVTcHCwzd87GRkZ2rJliyn+3rnkUsDZt2+f1qxZo4CAAKf34Mi/e1D6cLrqMkaOHKl+/frp9ttv1x133KEpU6YoKytL/fv3d0i9zMxMm//qP3DggHbu3KkKFSooPDy8WGvFxsZq0aJF+uyzz+Tr62s93+/v7y8vL69irXXJmDFj1LlzZ4WHh+vs2bNatGiR1q1bp1WrVjmknq+vb4FrjLy9vRUQEOCQa4+effZZdevWTRERETp8+LDi4uLk6uqqhx56qNhrXfL000+rZcuWev311/Xggw/qu+++05w5czRnzhyH1czPz9e8efPUr18/ubk59q+Obt266bXXXlN4eLjq16+vHTt26O2339aAAQMcWnfVqlUyDEO1a9fWr7/+qlGjRqlOnTrF8mf/Wn/OR4wYoVdffVW1atVStWrVNHbsWIWGhuree+91WM1Tp07p4MGD1mfVXArOwcHBRZpBulq9kJAQ3X///dq+fbtWrFihvLw8698/FSpUkLu7e7HWCwgI0Guvvabu3bsrJCREJ06c0IwZM/Tnn3867NEHKIVK+O6uUuvdd981wsPDDXd3d+OOO+4wNm/e7LBaa9euNSQVWPr161fstS5XR5Ixb968Yq91yYABA4yIiAjD3d3dCAwMNNq3b298+eWXDqt3OY68hbx3795GSEiI4e7ublSuXNno3bu38euvvzqk1t99/vnnRoMGDQwPDw+jTp06xpw5cxxab9WqVYYkY+/evQ6tYxiGkZGRYQwfPtwIDw83PD09jerVqxsvvviikZ2d7dC6S5YsMapXr264u7sbwcHBRmxsrHHmzJliOfa1/pzn5+cbY8eONYKCggwPDw+jffv21/27vlbNefPmXXZ9XFxcsde7dJv65Za1a9cWe73z588b9913nxEaGmq4u7sbISEhRvfu3Y3vvvuuSLVwY7IYhoMfIQoAAFACuCYHAACYEiEHAACYEiEHAACYEiEHAACYEiEHAACYEiEHAACYEiEHAACYEiEHgFOsW7dOFotFZ86cua7jVK1aVVOmTCmWngCYGyEHuA6pqakaMGCAQkND5e7uroiICA0fPlwnT5602e6uu+6SxWIpsFy8eLHAeg8PD1WuXFndunXT0qVLC9S8tN3mzZttxrOzsxUQECCLxaJ169Zdsefjx4/rySefVHh4uDw8PBQcHKzo6Gh988031/8LAYBShJADFNFvv/2m22+/Xfv27dMHH3ygX3/9VbNnz7a+zPXUqVM22w8aNEhHjhyxWf7+DqhL6/fv369PPvlE9erVU58+ffT4448XqB0WFqZ58+bZjC1btkw+Pj7X7LtXr17asWOH5s+fr19++UXLly/XXXfdVSCYAcCNjpADFFFsbKzc3d315Zdfqm3btgoPD1fnzp21Zs0a/fnnn3rxxRdtti9btqz1xYeXewHipfVVqlRR8+bN9cYbb+jf//63EhIStGbNGptt+/Xrp8WLF+v8+fPWsblz56pfv35X7fnMmTP6+uuv9cYbb6hdu3aKiIjQHXfcoTFjxqh79+6SpAEDBqhr1642++Xm5qpSpUpKTEyU9NfM09ChQzVixAiVL19eQUFBSkhIsL7I1tfXVzVr1tTKlSsL9PDNN9+oYcOG8vT0VPPmzfXDDz/YrP/kk09Uv359eXh4qGrVqpo8efJVvxMAXAkhByiCU6dOadWqVXrqqacKvL09ODhYffv21ZIlS3S9r4br16+fypcvX+C0VWRkpKpWrapPPvlEknTw4EFt2LBBjzzyyFWP5+PjIx8fH3366afKzs6+7DaPPfaYvvjiCx05csQ6tmLFCp07d069e/e2js2fP18VK1bUd999p6FDh+rJJ5/UAw88oJYtW2r79u3q2LGjHnnkEZ07d87m+KNGjdLkyZO1detWBQYGqlu3bsrNzZUkpaSk6MEHH1SfPn20e/dujRs3TmPHjlVSUlKhf2cAcAkhByiCffv2yTAM1a1b97Lr69atq9OnT+v48ePWsZkzZ1pDho+Pj5555plr1nFxcdEtt9yi33//vcC6AQMGaO7cuZKkpKQk3XPPPQoMDLzq8dzc3JSUlKT58+erXLlyatWqlV544QXt2rXLuk3Lli1Vu3ZtLViwwDo2b948PfDAAzanwxo1aqSXXnpJtWrV0pgxY+Tp6amKFStq0KBBqlWrll5++WWdPHnS5tiSFBcXpw4dOujWW2/V/PnzdfToUS1btkyS9Pbbb6t9+/YaO3asbrnlFsXExGjIkCF68803r/m7AoB/IuQA18GemZq+fftq586d1mXMmDGFrmGxWAqMP/zww9q0aZN+++03JSUlacCAAYU6Xq9evXT48GEtX75cnTp10rp169SkSROb2ZLHHnvMes3P0aNHtXLlygLHb9iwofVnV1dXBQQE6NZbb7WOBQUFSZKOHTtms1+LFi2sP1eoUEG1a9fWzz//LEn6+eef1apVK5vtW7VqpX379ikvL69Q3w8ALiHkAEVQs2ZNWSwW6z/O//Tzzz+rfPnyNjMr/v7+qlmzpnWpWLHiNevk5eVp3759qlatWoF1AQEB6tq1qwYOHKgLFy6oc+fOhe7f09NTHTp00NixY/Xtt98qJiZGcXFx1vWPPvqofvvtN23atEnvv/++qlWrpjZt2tgco0yZMjafLRaLzdilYJafn1/ovgCgOBFygCIICAhQhw4dNHPmTJuLfyUpLS1NCxcuVO/evS87A2OP+fPn6/Tp0+rVq9dl1w8YMEDr1q3To48+KldX1yLXqVevnrKysqyfAwICdO+992revHlKSkpS//79i3zsf/r7re+nT5/WL7/8Yj3tV7du3QK3sn/zzTe65ZZbruv7Abg5uV17EwCXM336dLVs2VLR0dF69dVXVa1aNf34448aNWqUKleurNdee82u4507d05paWm6ePGiDh06pGXLlumdd97Rk08+qXbt2l12n06dOun48ePy8/MrVI2TJ0/qgQce0IABA9SwYUP5+vpq27ZtmjRpknr06GGz7WOPPaauXbsqLy/vmndt2WP8+PEKCAhQUFCQXnzxRVWsWFH33nuvJOmZZ55R06ZNNWHCBPXu3VubNm3S9OnTNXPmzGKrD+DmQcgBiqhWrVratm2b4uLi9OCDD+rUqVMKDg7Wvffeq7i4OFWoUMGu4yUkJCghIUHu7u4KCAhQZGSklixZovvuu++K+1gslkKd9rrEx8dHzZo10zvvvKP9+/crNzdXYWFhGjRokF544QWbbaOiohQSEqL69esrNDTUru9yNRMnTtTw4cO1b98+NW7cWJ9//rnc3d0lSU2aNNGHH36ol19+WRMmTFBISIjGjx+vmJiYYqsP4OZhMa73HlcAppSZmanKlStr3rx56tmzZ0m3AwB2YyYHgI38/HydOHFCkydPVrly5awPCQSAGw0hB4CNgwcPqlq1aqpSpYqSkpJsXj0BADcSTlcBAABT4hZyAABgSoQcAABgSoQcAABgSoQcAABgSoQcAABgSoQcAABgSoQcAABgSoQcAABgSoQcAABgSv8PUQ8Oil1lXtAAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "pusch_transmitter_multi.pilot_pattern.show();"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "313111da",
   "metadata": {},
   "source": [
    "As before, all transmitters send pilots only on the third OFDM symbol. Transmitter 0 and 1 (using DMRS port 0 and 1, respectively) send pilots on all even subcarriers, while Transmitter 2 and 3 (using DMRS port 2 and 3, respectively), send pilots on the odd subcarriers.\n",
    "This means that the pilots signals of DMRS port 0 and 1 (as well as 2 and 3) interfere with each other as they occupy the same resource elements.\n",
    "So how can we estimate the channel coefficients for both transmitters individually without pilot contamination? \n",
    "\n",
    "The solution to this problem are the so-called code division multiplexing (CDM) groups in 5G NR.\n",
    "DMRS ports 0,1 belong to CDM group 0, while DMRS ports 2,3 belong to CDM group 1.\n",
    "\n",
    "The pilot signals belonging to the same CDM group are multiplied by orthogonal cover codes which allow separating them during channel estimation.\n",
    "The way this works is as follows. Denote by $\\mathbf{p_0} = [s_1, s_2]^\\textsf{T}$ a pair of two adjacent pilot symbols, e.g., those on subcarrier 0 and 2, of DMRS port 0. DMRS port 1 will simply send $\\mathbf{p_1} = [s_1, -s_2]^\\textsf{T}$. If we assume that the channel is constant over both subcarriers, we get the following received pilot signal at the receiver (we look only at a single antenna here):\n",
    "\n",
    "\\begin{align}\n",
    "\\mathbf{y} = h_0\\mathbf{p}_0 + h_1\\mathbf{p}_1 + \\mathbf{n}\n",
    "\\end{align}\n",
    "\n",
    "where $\\mathbf{y}\\in\\mathbb{C}^2$ is the received signal on both subcarriers, $h_0, h_1$ are the channel coefficients for both users, and $\\mathbf{n}\\in\\mathbb{C}^2$ is a noise vector.\n",
    "\n",
    "We can now obtain channel estimates for both transmitters by projecting $\\mathbf{y}$ onto their respective pilot sequences:\n",
    "\n",
    "\\begin{align}\n",
    "\\hat{h}_0 &= \\frac{\\mathbf{p}_0^\\mathsf{H}}{\\lVert \\mathbf{p}_0 \\rVert|^2} \\mathbf{y} = h_0 + \\frac{|s_1|^2-|s_2|^2}{\\lVert \\mathbf{p}_0 \\rVert|^2} h_1 + \\frac{\\mathbf{p}_0^\\mathsf{H}}{\\lVert \\mathbf{p}_0 \\rVert|^2} \\mathbf{n} = h_0 + n_0 \\\\\n",
    "\\hat{h}_1 &= \\frac{\\mathbf{p}_1^\\mathsf{H}}{\\lVert \\mathbf{p}_1 \\rVert|^2} \\mathbf{y} = \\frac{|s_1|^2-|s_2|^2}{\\lVert \\mathbf{p}_1 \\rVert|^2} h_0 + h_1 +\\frac{\\mathbf{p}_1^\\mathsf{H}}{\\lVert \\mathbf{p}_1 \\rVert|^2} \\mathbf{n} = h_1 + n_1.\n",
    "\\end{align}\n",
    "\n",
    "Since the pilot symbols have the same amplitude, we have $|s_1|^2-|s_2|^2=0$, i.e., the interference between both pilot sequence is zero. Moreover, due to an implict averaging of the channel estimates for both subcarriers, the effective noise variance is reduced by a factor of 3dB since\n",
    "\n",
    "\\begin{align}\n",
    "\\mathbb{E}\\left[ |n_0|^2 \\right] = \\mathbb{E}\\left[ |n_1|^2 \\right] = \\frac{\\sigma^2}{\\lVert \\mathbf{p}_1 \\rVert|^2} = \\frac{\\sigma^2}{2 |s_0|^2}.\n",
    "\\end{align}\n",
    "\n",
    "We can access the actual pilot sequences that are transmitted as follows:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "2884bdf7",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-03-08T23:46:21.687727Z",
     "iopub.status.busy": "2025-03-08T23:46:21.687409Z",
     "iopub.status.idle": "2025-03-08T23:46:21.698676Z",
     "shell.execute_reply": "2025-03-08T23:46:21.697896Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Shape of pilots: (4, 1, 48)\n"
     ]
    }
   ],
   "source": [
    "# pilots has shape [num_tx, num_layers, num_pilots]\n",
    "pilots = pusch_transmitter_multi.pilot_pattern.pilots\n",
    "print(\"Shape of pilots:\", pilots.shape)\n",
    "\n",
    "# Select only the non-zero subcarriers for all sequence\n",
    "p_0 = pilots[0,0,::2] # Pilot sequence of TX 0 on even subcarriers\n",
    "p_1 = pilots[1,0,::2] # Pilot sequence of TX 1 on even subcarriers\n",
    "p_2 = pilots[2,0,1::2] # Pilot sequence of TX 2 on odd subcarriers\n",
    "p_3 = pilots[3,0,1::2] # Pilot sequence of TX 3 on odd subcarriers"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "75de0579",
   "metadata": {},
   "source": [
    "Each pilot pattern consists of 48 symbols that are transmitted on the third OFDM symbol with 4PRBs, i.e., 48 subcarriers. \n",
    "Let us now verify that pairs of two adjacent pilot symbols in `p_0` and `p_1` as well as in `p_2` and `p_3` are orthogonal."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "b3fbc970",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-03-08T23:46:21.701325Z",
     "iopub.status.busy": "2025-03-08T23:46:21.701032Z",
     "iopub.status.idle": "2025-03-08T23:46:21.706652Z",
     "shell.execute_reply": "2025-03-08T23:46:21.706043Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j\n",
      " 0.+0.j 0.+0.j]\n",
      "[0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j\n",
      " 0.+0.j 0.+0.j]\n"
     ]
    }
   ],
   "source": [
    "print(np.sum(np.reshape(p_0, [-1,2]) * np.reshape(np.conj(p_1), [-1,2]), axis=1))\n",
    "print(np.sum(np.reshape(p_2, [-1,2]) * np.reshape(np.conj(p_3), [-1,2]), axis=1))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "34942413",
   "metadata": {},
   "source": [
    "Let us now come back to the masked resource elements in each pilot pattern. \n",
    "The parameter `NumCDMGroupsWithoutData` mentioned earlier determines which resource elements in a DMRS-carrying OFDM symbol are masked for data transmissions. This is to avoid inference with pilots from other DMRS groups.\n",
    "\n",
    "In our example, `NumCDMGroupsWithoutData` is set to two. This means that no data can be transmitted on any of the resource elements occupied by both DMRS groups. However, if we would have set `NumCDMGroupsWithoutData` equal to one, data and pilots would be frequency multiplexed. \n",
    "This can be useful, if we only schedule transmissions from DMRS ports in the same CDM group.\n",
    "\n",
    "Here is an example of such a configuration:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "7d16844f",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-03-08T23:46:21.709400Z",
     "iopub.status.busy": "2025-03-08T23:46:21.709109Z",
     "iopub.status.idle": "2025-03-08T23:46:22.478034Z",
     "shell.execute_reply": "2025-03-08T23:46:22.477552Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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H2jXrl1atmyZfvnlF8XGxmrBggV64oknbntuUFCQTp8+nWv8+lhwcPBNzx0yZIjNGj2tW7e23pR7Oz4+PmrXrp3atWunEiVKaO7cudq2bZtat25923NvFARycnJUu3ZtTZo06YbnXA8lx44dU2RkpKpVq6ZJkyYpJCRErq6u+s9//qPJkyfnuqfG2dn5hte72bhxm5UvgoKCtH79ehmGIYvFYh3Py88bgHkQcoA8SElJUVxcnLp166Zu3bopJydHc+fO1bBhw9S5c2ebWYkbqVevnjZt2qScnBybm4+3bdumkiVL6v7777/pua+99pqefPJJ6+tSpUrl6z00bNhQc+fOtf6i/+sv/7y67777tGfPHkVGRt7y/JUrVyozM1MrVqywmaX568dZjlSvXj3985//1IEDB1SjRg3r+LZt26z7AZgf9+QAeTBo0CAZhqEPP/xQkuTk5KSZM2fq3Llz1kerb+WRRx7RmTNntGTJEuvYuXPntHjxYkVHR9/w/pHratSooaioKOsWERFx02MvX75808ejV69eLUmqWrWqJFkXL7x48eJt+7+uV69e+uWXXzRr1qxc+/744w9dunRJ0v/PwPx1xiUtLU0JCQl5rnUnunXrphIlSmj69OnWMcMwNHPmTJUvX17NmzcvlD4AFC1mcoDbWLp0qZYvX259DPq6+vXrKzY2Vh999JFiYmKs687cyCOPPKKmTZuqX79+2r9/v3XF4+zsbL311lsF1uvly5fVvHlzNW3aVB07dlRISIguXryoZcuWadOmTerevbvq168v6c9ZGT8/P82cOVPe3t7y9PRUkyZNFB4eftPrP/XUU1q0aJFeeOEFrV+/Xi1atFB2drYOHjyoRYsWKSkpSQ0bNlT79u3l6uqq6OhoPf/888rIyNCsWbNUrly5G35sV9AqVKigoUOH6v3331dWVpYaNWpk/RnMnz//ph+DATCZIn22CygmbvYI+e+//25UqFDBqFev3g1XyU1PTzeCg4ONBg0a3HYV3fPnzxvPPPOM4e/vb5QsWdJo3bq1sX379gJ7D4bx54rHs2bNMrp3726EhYUZbm5uRsmSJY369esb77//vpGZmWlz/PLly40aNWoYLi4uNo+Tt27d2qhZs+YNa1y9etUYP368UbNmTcPNzc0oVaqUERERYbz11ltGWlqa9bgVK1YYderUMdzd3Y2K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aAUHB8tisWjZsmUOqxUfH69GjRrJ29tb5cqVU/fu3XXo0CGH1ZOkGTNmqE6dOtZFuZo1a6bVq1c7tOZfjRs3ThaLRUOHDnXI9ceMGSOLxWKzVatWzSG1/uqXX37Rk08+KX9/f3l4eKh27drasWOHQ2pVrFgx13u0WCyKjY11SL3s7GyNGjVK4eHh8vDw0H333ae3337b4d8n9Pvvv2vo0KEKCwuTh4eHmjdvru3btxfItW/399wwDI0ePVpBQUHy8PBQVFSUjhw54tCaS5YsUfv27eXv7y+LxaLdu3c7rF5WVpZef/111a5dW56engoODtbTTz+tU6dOOaSe9OffzWrVqsnT01OlSpVSVFSUtm3blu96uPsQcm7gs88+07BhwxQXF6edO3eqbt266tChg86ePeuQepcuXVLdunU1bdo0h1z/rzZu3KjY2Fht3bpVa9euVVZWltq3b69Llxz3hZsVKlTQuHHjlJycrB07dqht27bq1q2bfvjhB4fVvG779u36xz/+oTp16ji0Ts2aNXX69GnrtnnzZofWu3Dhglq0aKESJUpo9erV2r9/vyZOnKhSpUo5pN727dtt3t/atWslSY8++qhD6o0fP14zZszQRx99pAMHDmj8+PGaMGGCPvzwQ4fUu+7ZZ5/V2rVrNW/ePO3bt0/t27dXVFSUfvnllzu+9u3+nk+YMEFTp07VzJkztW3bNnl6eqpDhw66cuWKw2peunRJLVu21Pjx4/NdI6/1Ll++rJ07d2rUqFHauXOnlixZokOHDqlr164OqSdJ999/vz766CPt27dPmzdvVsWKFdW+fXv9+uuv+a6Ju0yRfnNWMdW4cWMjNjbW+jo7O9sIDg424uPjHV5bkrF06VKH17nu7NmzhiRj48aNhVbTMAyjVKlSxj//+U+H1vj999+NKlWqGGvXrjVat25tDBkyxCF14uLijLp16zrk2jfz+uuvGy1btizUmn81ZMgQ47777jNycnIccv3OnTsb/fv3txnr0aOH0adPH4fUMwzDuHz5suHs7GysWrXKZrxBgwbGm2++WaC1/vfveU5OjhEYGGi8//771rGLFy8abm5uxqeffuqQmn914sQJQ5Kxa9euAql1u3rXfffdd4Yk46effiqUemlpaYYk46uvvrrjerg7MJPzP65evark5GRFRUVZx5ycnBQVFaUtW7YUYWeOkZaWJkkqXbp0odTLzs7WwoULdenSJTVr1syhtWJjY9W5c2eb/y0d5ciRIwoODlalSpXUp08fnTx50qH1VqxYoYYNG+rRRx9VuXLlVL9+fc2aNcuhNa+7evWq/vWvf6l///52femtPZo3b65169bp8OHDkqQ9e/Zo8+bN6tSpk0PqSdK1a9eUnZ2d6/uEPDw8HD4zd+LECaWmptr8f9XX11dNmjQx5b8716WlpcliscjPz8/hta5evaqPP/5Yvr6+qlu3rsProXi4K76gszCdO3dO2dnZub7lPCAgQAcPHiyirhwjJydHQ4cOVYsWLVSrVi2H1tq3b5+aNWumK1euyMvLS0uXLlWNGjUcVm/hwoXauXNngd1PcStNmjRRYmKiqlatqtOnT+utt95Sq1at9P3338vb29shNY8fP64ZM2Zo2LBhGjlypLZv367BgwfL1dVVffv2dUjN65YtW6aLFy8qJibGYTXeeOMNpaenq1q1anJ2dlZ2drbeffdd9enTx2E1vb291axZM7399tuqXr26AgIC9Omnn2rLli2qXLmyw+pKUmpqqiTd8N+d6/vM5sqVK3r99df1+OOPO/RLO1etWqXHHntMly9fVlBQkNauXasyZco4rB6KF0LOPSw2Nlbff/+9w/8rVZKqVq2q3bt3Ky0tTZ9//rn69u2rjRs3OiTopKSkaMiQIVq7dm2hfMvvX2cX6tSpoyZNmigsLEyLFi3SM88845CaOTk5atiwod577z1JUv369fX9999r5syZDg85s2fPVqdOnRQcHOywGosWLdL8+fO1YMEC1axZU7t379bQoUMVHBzs0Pc3b9489e/fX+XLl5ezs7MaNGigxx9/XMnJyQ6reS/KyspSr169ZBiGZsyY4dBabdq00e7du3Xu3DnNmjVLvXr10rZt21SuXDmH1kXxwMdV/6NMmTJydnbWmTNnbMbPnDmjwMDAIuqq4A0cOFCrVq3S+vXrVaFCBYfXc3V1VeXKlRUREaH4+HjVrVtXH3zwgUNqJScn6+zZs2rQoIFcXFzk4uKijRs3aurUqXJxcVF2drZD6l7n5+en+++/X0ePHnVYjaCgoFwBsXr16g7/mOynn37SV199pWeffdahdYYPH6433nhDjz32mGrXrq2nnnpKL7/8suLj4x1a97777tPGjRuVkZGhlJQUfffdd8rKylKlSpUcWvf6vy1m/3dH+v+A89NPP2nt2rUOncWRJE9PT1WuXFlNmzbV7Nmz5eLiotmzZzu0JooPQs7/cHV1VUREhNatW2cdy8nJ0bp16xx+D0lhMAxDAwcO1NKlS/X1118rPDy8SPrIyclRZmamQ64dGRmpffv2affu3datYcOG6tOnj3bv3i1nZ2eH1L0uIyNDx44dU1BQkMNqtGjRItej/4cPH1ZYWJjDakpSQkKCypUrp86dOzu0zuXLl+XkZPvPk7Ozs3Jychxa9zpPT08FBQXpwoULSkpKUrdu3RxaLzw8XIGBgTb/7qSnp2vbtm2m+HfnuusB58iRI/rqq6/k7+9f6D048t8eFD98XHUDw4YNU9++fdWwYUM1btxYU6ZM0aVLl9SvXz+H1MvIyLD5r/4TJ05o9+7dKl26tEJDQwu0VmxsrBYsWKDly5fL29vb+nm/r6+vPDw8CrTWdSNGjFCnTp0UGhqq33//XQsWLNCGDRuUlJTkkHre3t657jHy9PSUv7+/Q+49evXVVxUdHa2wsDCdOnVKcXFxcnZ21uOPP17gta57+eWX1bx5c7333nvq1auXvvvuO3388cf6+OOPHVYzJydHCQkJ6tu3r1xcHPtPR3R0tN59912FhoaqZs2a2rVrlyZNmqT+/fs7tG5SUpIMw1DVqlV19OhRDR8+XNWqVSuQv/u3+3s+dOhQvfPOO6pSpYrCw8M1atQoBQcHq3v37g6ref78eZ08edK6Vs314BwYGJivGaRb1QsKCtIjjzyinTt3atWqVcrOzrb++1O6dGm5uroWaD1/f3+9++676tq1q4KCgnTu3DlNmzZNv/zyi8OWPkAxVMRPdxVbH374oREaGmq4uroajRs3NrZu3eqwWuvXrzck5dr69u1b4LVuVEeSkZCQUOC1ruvfv78RFhZmuLq6GmXLljUiIyONL7/80mH1bsSRj5D37t3bCAoKMlxdXY3y5csbvXv3No4ePeqQWn+1cuVKo1atWoabm5tRrVo14+OPP3ZovaSkJEOScejQIYfWMQzDSE9PN4YMGWKEhoYa7u7uRqVKlYw333zTyMzMdGjdzz77zKhUqZLh6upqBAYGGrGxscbFixcL5Nq3+3uek5NjjBo1yggICDDc3NyMyMjIO/5Z365mQkLCDffHxcUVeL3rj6nfaFu/fn2B1/vjjz+Mhx9+2AgODjZcXV2NoKAgo2vXrsZ3332Xr1q4O1kMw8FLiAIAABQB7skBAACmRMgBAACmRMgBAACmRMgBAACmRMgBAACmRMgBAACmRMgBAACmRMgBUCg2bNggi8Wiixcv3tF1KlasqClTphRITwDMjZAD3IGUlBT1799fwcHBcnV1VVhYmIYMGaLffvvN5rgHH3xQFosl13bt2rVc+93c3FS+fHlFR0dryZIluWpeP27r1q0245mZmfL395fFYtGGDRtu2vOvv/6qF198UaGhoXJzc1NgYKA6dOigb7/99s5/IABQjBBygHw6fvy4GjZsqCNHjujTTz/V0aNHNXPmTOuXuZ4/f97m+Oeee06nT5+22f76HVDX9x87dkxffPGFatSooccee0wDBgzIVTskJEQJCQk2Y0uXLpWXl9dt++7Zs6d27dqluXPn6vDhw1qxYoUefPDBXMEMAO52hBwgn2JjY+Xq6qovv/xSrVu3VmhoqDp16qSvvvpKv/zyi958802b40uWLGn94sMbfQHi9f0VKlRQ06ZNNX78eP3jH//QrFmz9NVXX9kc27dvXy1cuFB//PGHdWzOnDnq27fvLXu+ePGiNm3apPHjx6tNmzYKCwtT48aNNWLECHXt2lWS1L9/f3Xp0sXmvKysLJUrV06zZ8+W9OfM06BBgzR06FCVKlVKAQEBmjVrlvWLbL29vVW5cmWtXr06Vw/ffvut6tSpI3d3dzVt2lTff/+9zf4vvvhCNWvWlJubmypWrKiJEyfe8j0BwM0QcoB8OH/+vJKSkvTSSy/l+vb2wMBA9enTR5999pnu9Kvh+vbtq1KlSuX62CoiIkIVK1bUF198IUk6efKkvvnmGz311FO3vJ6Xl5e8vLy0bNkyZWZm3vCYZ599VmvWrNHp06etY6tWrdLly5fVu3dv69jcuXNVpkwZfffddxo0aJBefPFFPfroo2revLl27typ9u3b66mnntLly5dtrj98+HBNnDhR27dvV9myZRUdHa2srCxJUnJysnr16qXHHntM+/bt05gxYzRq1CglJibm+WcGANcRcoB8OHLkiAzDUPXq1W+4v3r16rpw4YJ+/fVX69j06dOtIcPLy0uvvPLKbes4OTnp/vvv148//phrX//+/TVnzhxJUmJioh566CGVLVv2ltdzcXFRYmKi5s6dKz8/P7Vo0UIjR47U3r17rcc0b95cVatW1bx586xjCQkJevTRR20+Dqtbt67+9re/qUqVKhoxYoTc3d1VpkwZPffcc6pSpYpGjx6t3377zebakhQXF6d27dqpdu3amjt3rs6cOaOlS5dKkiZNmqTIyEiNGjVK999/v2JiYjRw4EC9//77t/1ZAcD/IuQAd8CemZo+ffpo9+7d1m3EiBF5rmGxWHKNP/nkk9qyZYuOHz+uxMRE9e/fP0/X69mzp06dOqUVK1aoY8eO2rBhgxo0aGAzW/Lss89a7/k5c+aMVq9enev6derUsf7Z2dlZ/v7+ql27tnUsICBAknT27Fmb85o1a2b9c+nSpVW1alUdOHBAknTgwAG1aNHC5vgWLVroyJEjys7OztP7A4DrCDlAPlSuXFkWi8X6y/l/HThwQKVKlbKZWfH19VXlypWtW5kyZW5bJzs7W0eOHFF4eHiuff7+/urSpYueeeYZXblyRZ06dcpz/+7u7mrXrp1GjRql//73v4qJiVFcXJx1/9NPP63jx49ry5Yt+te//qXw8HC1atXK5holSpSweW2xWGzGrgeznJycPPcFAAWJkAPkg7+/v9q1a6fp06fb3PwrSampqZo/f7569+59wxkYe8ydO1cXLlxQz549b7i/f//+2rBhg55++mk5Ozvnu06NGjV06dIl62t/f391795dCQkJSkxMVL9+/fJ97f/110ffL1y4oMOHD1s/9qtevXquR9m//fZb3X///Xf0/gDcm1xufwiAG/noo4/UvHlzdejQQe+8847Cw8P1ww8/aPjw4Spfvrzeffddu653+fJlpaam6tq1a/r555+1dOlSTZ48WS+++KLatGlzw3M6duyoX3/9VT4+Pnmq8dtvv+nRRx9V//79VadOHXl7e2vHjh2aMGGCunXrZnPss88+qy5duig7O/u2T23ZY+zYsfL391dAQIDefPNNlSlTRt27d5ckvfLKK2rUqJHefvtt9e7dW1u2bNFHH32k6dOnF1h9APcOQg6QT1WqVNGOHTsUFxenXr166fz58woMDFT37t0VFxen0qVL23W9WbNmadasWXJ1dZW/v78iIiL02Wef6eGHH77pORaLJU8fe13n5eWlJk2aaPLkyTp27JiysrIUEhKi5557TiNHjrQ5NioqSkFBQapZs6aCg4Ptei+3Mm7cOA0ZMkRHjhxRvXr1tHLlSrm6ukqSGjRooEWLFmn06NF6++23FRQUpLFjxyomJqbA6gO4d1iMO33GFYApZWRkqHz58kpISFCPHj2Kuh0AsBszOQBs5OTk6Ny5c5o4caL8/PysiwQCwN2GkAPAxsmTJxUeHq4KFSooMTHR5qsnAOBuwsdVAADAlHiEHAAAmBIhBwAAmBIhBwAAmBIhBwAAmBIhBwAAmBIhBwAAmBIhBwAAmBIhBwAAmBIhBwAAmNL/AalmGEHF3CnEAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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RMgBAACmZHfIGT16tLKysrKNJyUl6amnnsqTpgAAAO6W3SFn7ty5atq0qX755Rfr2MaNG1WrVi0dO3YsT5sDAADILbtvId+3b5/69++vunXratKkSTpy5IimTp2qYcOG6d1337XrXDNnztTMmTN14sQJSVKNGjX0zjvvqEOHDpKka9eu6bXXXtOSJUuUlpamdu3aacaMGfL397e3bdNr3So2X+uxLg8AoLCzO+QUL15cy5Yt05tvvqn+/fvLxcVFa9asUevWre0uXrZsWY0fP16VK1eWYRhasGCBunbtqj179qhGjRp69dVX9X//939avny5fH19NWDAAHXr1k3ffvut3bUAAMD9JVcXHn/00UeaOnWqnnrqKVWoUEGDBg3SDz/8YPd5OnfurEcffVSVK1fWAw88oPfee09eXl7avn27kpKSNHfuXH344Ydq1aqVwsLCNH/+fH333Xfavn17btoGAAD3EbtDTvv27fXuu+9qwYIFWrRokfbs2aNHHnlEDRs21MSJE3PdSGZmppYsWaLU1FQ1atRI8fHxysjIUHh4uPWYqlWrKiQkRNu2bbvledLS0pScnGyzAQCA+4/dISczM1P79u3TE088IUny8PDQzJkz9dlnn2ny5Ml2N7B//355eXnJzc1NL730klauXKnq1asrMTFRrq6uKlasmM3x/v7+SkxMvOX5oqOj5evra92Cg4Pt7gkAANz77A4569atU1BQULbxjh07av/+/XY3UKVKFe3du1c7duzQyy+/rD59+ujAgQN2n+eGkSNHKikpybolJCTk+lwAAODelatrcrZs2aKnn35ajRo10u+//y5JWrhwoQ4dOmT3uVxdXVWpUiWFhYUpOjpaderU0dSpUxUQEKD09HRdvnzZ5vgzZ84oICDgludzc3OTj4+PzQYAAO4/doeczz//XO3atZOHh4f27NmjtLQ/H/WelJSk999//64bysrKUlpamsLCwlSkSBHFxcVZ9x0+fFgnT55Uo0aN7roOAAAwN7tvIR83bpxmzZqlZ599VkuWLLGON2nSROPGjbPrXCNHjlSHDh0UEhKiK1euaPHixdq4caNiY2Pl6+ur5557TkOHDlWJEiXk4+OjgQMHqlGjRmrYsKG9bZse69YAAGDL7pBz+PBhPfLII9nGfX19s321dCdnz57Vs88+q9OnT8vX11e1a9dWbGys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IuQAAABTIuQAAABTIuQAAABTIuQAAABTIuQAAABTKtBbyDdv3qwPPvhA8fHxOn36tFauXKnHHnvMut8wDEVFRWnOnDm6fPmymjRpopkzZ6py5coF13Qh1bpVbL7W45Z1AEBhV6AzOampqapTp46mT59+0/0TJ07UtGnTNGvWLO3YsUOenp5q166drl27ls+dAgCAe02BzuR06NBBHTp0uOk+wzA0ZcoUvf322+ratask6ZNPPpG/v7+++OIL9erVKz9bBQAA95hCe03O8ePHlZiYqPDwcOuYr6+vGjRooG3btt3yfWlpaUpOTrbZAADA/afQhpzExERJkr+/v824v7+/dd/NREdHy9fX17oFBwc7tE8AAFA4FdqQk1sjR45UUlKSdUtISCjolgAAQAEotCEnICBAknTmzBmb8TNnzlj33Yybm5t8fHxsNgAAcP8ptCGnfPnyCggIUFxcnHUsOTlZO3bsUKNGjQqwMwAAcC8o0LurUlJS9PPPP1tfHz9+XHv37lWJEiUUEhKiIUOGaNy4capcubLKly+vUaNGKSgoyGYtHfyJdWsAALBVoCFn165datmypfX10KFDJUl9+vRRTEyM3njjDaWmpurFF1/U5cuX1bRpU61du1bu7u4F1TIAALhHFGjIadGihQzDuOV+i8WiMWPGaMyYMfnYFQAAMINCe00OAADA3SDkAAAAUyLkAAAAUyLkAAAAUyLkAAAAUyrQu6uQd1q3is3XeqzLAwAo7JjJAQAApkTIAQAApkTIAQDgPhARESGLxSKLxaIiRYrI399fbdq00bx585SVlZXj88TExKhYsWKOazQPEXIAALhPtG/fXqdPn9aJEye0Zs0atWzZUoMHD1anTp10/fr1gm4vzxFyAAC4T7i5uSkgIEBlypRRvXr19Oabb+rLL7/UmjVrFBMTI0n68MMPVatWLXl6eio4OFivvPKKUlJSJEkbN25U3759lZSUZJ0VGj16tCRp4cKFeuihh+Tt7a2AgAD94x//0NmzZwvok/6JkAMAwD0sOTnZZktLS7Pr/a1atVKdOnW0YsUKSZKTk5OmTZumn376SQsWLNA333yjN954Q5LUuHFjTZkyRT4+Pjp9+rROnz6t119/XZKUkZGhsWPH6ocfftAXX3yhEydOKCIiIk8/q724hdwkuKUbAO5PwcHBNq+joqKssys5VbVq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P/+89ZqfM2fOaM2aNdnOX7t2beufnZ2d5efnp1q1alnH/P39JUlnz561eV+jRo2sfy5RooSqVKmigwcPSpIOHjyoJk2a2BzfpEkTHT16VJmZmTn6fABwAyEHyIVKlSrJYrFY/3H+u4MHD6p48eI2Myu+vr6qVKmSdStZsuQd62RmZuro0aMqX758tn1+fn7q1KmTnnvuOV27dk0dOnTIcf/u7u5q06aNRo0ape+++04RERGKioqy7n/22Wf1yy+/aNu2bfrPf/6j8uXLq1mzZjbnKFKkiM1ri8ViM3YjmGVlZeW4LwDIS4QcIBf8/PzUpk0bzZgxw+biX0lKTEzUokWL1LNnz5vOwNhjwYIFunTpkrp3737T/f369dPGjRv17LPPytnZOdd1qlevrtTUVOtrPz8/PfbYY5o/f75iYmLUt2/fXJ/77/566/ulS5d05MgR69d+1apVy3Yr+7fffqsHHnjgrj4fgPuTy50PAXAzH3/8sRo3bqx27dpp3LhxKl++vH766ScNGzZMZcqU0XvvvWfX+a5evarExERdv35dv/32m1auXKnJkyfr5ZdfVsuWLW/6nvbt2+vcuXPy8fHJUY0LFy7oySefVL9+/VS7dm15e3tr165dmjhxorp27Wpz7PPPP69OnTopMzPzjndt2WPMmDHy8/OTv7+/3nrrLZUsWVKPPfaYJOm1115T/fr1NXbsWPXs2VPbtm3Txx9/rBkzZuRZfQD3D0IOkEuVK1fWrl27FBUVpR49eujixYsKCAjQY489pqioKJUoUcKu882ZM0dz5syRq6ur/Pz8FBYWpqVLl+rxxx+/5XssFkuOvva6wcvLSw0aNNDkyZN17NgxZWRkKDg4WC+88ILefPNNm2PDw8MVGBioGjVqKCgoyK7Pcjvjx4/X4MGDdfToUdWtW1dfffWVXF1dJUn16tXTsmXL9M4772js2LEKDAzUmDFjFBERkWf1Adw/LMbd3uMKwJRSUlJUpkwZzZ8/X926dSvodgDAbszkALCRlZWl8+fPa9KkSSpWrJh1kUAAuNcQcgDYOHnypMqXL6+yZcsqJibG5tETAHAv4esqAABgStxCDgAATImQAwAATImQAwAATImQAwAATImQAwAATImQAwAATImQAwAATImQAwAATImQAwAATOn/AUBgwk+lvSsyAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "pusch_config = PUSCHConfig()\n",
    "pusch_config.dmrs.num_cdm_groups_without_data = 1\n",
    "pusch_config.dmrs.dmrs_port_set = [0]\n",
    "\n",
    "pusch_config_1 = pusch_config.clone()\n",
    "pusch_config_1.dmrs.dmrs_port_set = [1]\n",
    "\n",
    "PUSCHTransmitter([pusch_config, pusch_config_1]).pilot_pattern.show();"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "98221864",
   "metadata": {},
   "source": [
    "The DRMS ports 0 and 1 belong both to CDM group 0 so that the resource elements of CDM group 1 do not need to be masked and can be used for data transmission. One can see in the above figure that data and pilots are now indeed multiplexed in the frequency domain."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c329e4a5",
   "metadata": {},
   "source": [
    "### Configuring Multiple Layers"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bfd3c2a9",
   "metadata": {},
   "source": [
    "In 5G NR, a transmitter can be equipped with 1,2, or 4 antenna ports, i.e., physical antennas that are fed with an individual transmit signal.\n",
    "It can transmit 1,2,3 or 4 layers, i.e., spatial streams, as long as the number of layers does not exceed the number of antenna ports. \n",
    "Using codebook-based precoding, a number of layers can be mapped onto a larger number of antenna ports, e.g., 2 layers using 4 antenna ports. If no precoding is used, each layer is simply mapped to one of the antenna ports.\n",
    "\n",
    "It is important to understand that each layer is transmitted using a different DMRS port. That means that the number of DMRS ports is independent of the number of antenna ports.\n",
    "\n",
    "In the next cell, we will configure a single transmitter with four antenna ports, sending two layers on DMRS ports 0 and 1.\n",
    "We can then choose among different precoding matrices with the help of the transmit precoding matrix identifier (TPMI). "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "c624eeb1",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-03-08T23:46:22.482134Z",
     "iopub.status.busy": "2025-03-08T23:46:22.481859Z",
     "iopub.status.idle": "2025-03-08T23:46:22.487304Z",
     "shell.execute_reply": "2025-03-08T23:46:22.486793Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0.5+0.j , 0. +0.j ],\n",
       "       [0. +0.j , 0.5+0.j ],\n",
       "       [0.5+0.j , 0. +0.j ],\n",
       "       [0. +0.j , 0. +0.5j]])"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pusch_config = PUSCHConfig()\n",
    "pusch_config.num_antenna_ports = 4\n",
    "pusch_config.num_layers = 2\n",
    "pusch_config.dmrs.dmrs_port_set = [0,1]\n",
    "pusch_config.precoding = \"codebook\"\n",
    "pusch_config.tpmi = 7\n",
    "\n",
    "# Show the precoding matrix\n",
    "pusch_config.precoding_matrix"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "26516c5b",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-03-08T23:46:22.491384Z",
     "iopub.status.busy": "2025-03-08T23:46:22.491133Z",
     "iopub.status.idle": "2025-03-08T23:46:23.285438Z",
     "shell.execute_reply": "2025-03-08T23:46:23.284890Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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fe3YsUPLli3Tr7/+qpiYGC1cuFBPPvnkHfcNDg7WqVOncozfGAsJCbnlvsOGDbN5Rk+LFi2sF+Xeia+vr9q0aaM2bdqoSJEimjdvnrZs2aIWLVrccd+bBYHs7GzVqFFDU6ZMuek+N0LJkSNH1Lp1a1WuXFlTpkxRaGio3N3d9Z///EdTp07NcU2Nq6vrTY93q3HjDk++CA4O1tq1a2UYhiwWi3U8N99vAOZByAFyISUlRbGxserSpYu6dOmi7OxszZs3TyNGjFCHDh1sZiVupnbt2tqwYYOys7NtLj7esmWLihYtqgcffPCW+7766qt66qmnrF+XKFEiT5+hXr16mjdvnvUP/V//+OfWAw88oF27dql169a33X/lypXKyMjQihUrbGZp/no6y5Fq166tf/7zn9q3b5+qVq1qHd+yZYt1PQDz45ocIBeGDBkiwzD0wQcfSJJcXFw0e/ZsnTt3znpr9e089thjOn36tJYsWWIdO3funD777DN16tTppteP3FC1alVFRUVZl8jIyFtue+XKlVveHr1q1SpJUqVKlSTJ+vDCixcv3rH/G3r06KFff/1V8fHxOdb98ccfunz5sqT/n4H564xLWlqaEhIScl3rbnTp0kVFihTRzJkzrWOGYWj27NkqU6aMmjRp4pQ+ABQsZnKAO1i6dKmWL19uvQ36hjp16igmJkYffvih+vbta33uzM089thjatSokfr166e9e/dan3iclZWlN998M996vXLlipo0aaJGjRqpXbt2Cg0N1cWLF7Vs2TJt2LBBXbt2VZ06dST9OStTvHhxzZ49Wz4+PvL29lbDhg0VERFxy+M//fTTWrx4sZ5//nmtXbtWTZs2VVZWlvbv36/Fixdr9erVqlevntq2bSt3d3d16tRJzz33nC5duqT4+HiVLl36pqft8lvZsmU1fPhwvffee8rMzFT9+vWt34MFCxbc8jQYAJMp0Hu7gELiVreQ//7770bZsmWN2rVr3/Qpuenp6UZISIhRt27dOz5F9/z588aAAQMMf39/o2jRokaLFi2MrVu35ttnMIw/n3gcHx9vdO3a1QgPDzc8PDyMokWLGnXq1DHee+89IyMjw2b75cuXG1WrVjXc3Nxsbidv0aKFUa1atZvWuHbtmjFx4kSjWrVqhoeHh1GiRAkjMjLSePPNN420tDTrditWrDBq1qxpeHp6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Y8eOatu2rc0xXnrpJXl4eGjz5s02x9+1a5d2795tcwrKMAxlZ2fr2LFjOnjwoNzc3BQZGWldX7ly5RzX6OZGoXkY4M1MnTpVLi4u6t69u83DAAEAwJ9SUlJsLs243SzODf3797eeHpoxY0aO9Z06dVJ4eLji4+MVEhKi7OxsVa9eXdeuXZP057U9x44d06pVq/TNN9+oR48eioqK0ueff249Rps2bfTJJ59o9erV6t27t3X80qVLeu655zR06NAcdcPCwnTw4MHcf/g7KFQh569TZZLk6empGTNm3PR/AAAAoDxdf9quXTtdu3ZNFotF0dG2T7D/7bffdODAAcXHx6t58+aS/rxQ+GZ1e/bsqZ49e+qxxx5Tu3btdP78eZUsWVKS1LlzZ3Xq1ElPPvmkXF1d1atXL0l/BqS9e/eqQoUKN+2tcuXKun79upKTk62nqw4cOJDjGt3cKFQhBwAAOJ6rq6v27dtn/fdflShRQv7+/vroo48UHBys48eP6/XXX7fZZsqUKQoODladOnXk4uKizz77TEFBQTlOKT366KOaP3++nn76abm5uemxxx7Ta6+9pkaNGmnw4MF69tln5e3trb1792rNmjX68MMPrafAnnvuOc2aNUtubm4aPny4vLy87P6chBwAAO5Dt5r9cXFx0aJFizR06FBVr15dlSpV0vTp0/Xwww9bt/Hx8dGkSZN06NAhubq6qn79+vrPf/4jF5ecN20/9thjys7O1tNPPy0XFxd169ZN69ev1xtvvKHmzZvLMAw98MAD6tmzp3WfhIQEPfvss2rRooUCAwP19ttva8yYMXZ/RothGIbde91D0tPT5efnp5qjV8jV07ug23GYRT3LOrVer0+58BiA+WRdvazd73ZWWlqawx5BcuPvUnJysooVK5bn41y6dEmRkZEO7fVeV+CvdQAAAHAETleZRPzZOU6uGH3nTQAAKEDM5AAAAFMi5AAAAFMi5AAAAFMi5AAAAFMi5AAAAFMi5AAAAFMi5AAAAFPiOTkmMTBggFPrJYknHgMACjdmcgAAgCkRcgAAgCkRcgAAgCkRcgAAgCkRcgAAgCkRcgAAgCkRcgAAgCnxnByTiD87x8kVo51cDwAA+zCTAwAATImQAwAATImQAwAATImQAwAATImQAwAATImQAwAATImQAwAATInn5JjEwIABTq2XpBNOrQcA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a9fWwoUL77p4TEyMFi5cqOXLl8vHx8d6nY2fn5+8vLzk5+enAQMGaMSIESpZsqR8fX01ZMgQNW7cmDur/sfAgAFOrZekE06tBwCAvfIUcrKysrR06VLt27dPklS1alV16dJFbm72HW7WrFmS/rwz668SEhLUt29fSdLUqVPl4uKi7t272zwMEAAA4HbsDjk//fSTOnfurNTUVOuTiSdOnKiAgACtXLnSemdUbhiGccdtPD09NWPGDM2YMcPeVgEAwH3M7mtynn32WVWrVk0nTpzQ9u3btX37dqWkpKhmzZoaNGiQI3oEAACwm90zOTt37tS2bdtUokQJ61iJEiX0zjvvqH79+vnaHAAAQF7ZPZPz4IMP6vTp0znGz5w5owoVKuRLUwAAAHcrVyHnr69IiIuL09ChQ/X555/rxIkTOnHihD7//HMNHz5cEydOdHS/AAAAuZKr01XFixeXxWKxfm0Yhnr06GEdu3EBcadOnZSVleWANgEAAOyTq5Czdu1aR/eBuxR/do6TK0Y7uR4AAPbJVchp0aKFo/sAAADIV3bfXfXdd9/ddv1DDz2U52YAAADyi90h53+fTizJ5nodrskBAACFgd23kF+4cMFmOXPmjL766ivVr18/z28hBwAAyG92z+T4+fnlGGvTpo3c3d01YsQIJScn50tjAAAAd8PumZxbCQwM1IEDB/LrcAAAAHfF7pmc3bt323xtGIZOnTqlCRMmqHbt2vnVF+w0MGCAU+sl6YRT6wEAYC+7Q07t2rVlsVhyvEG8UaNGmjt3br41BgAAcDfsDjnHjh2z+drFxUUBAQHy9PTMt6YAAADult0hJzw83BF9AAAA5KtcX3i8adMmffnllzZjH3/8sSIiIlS6dGkNGjRIGRkZ+d4gAABAXuQ65IwfP14//fST9es9e/ZowIABioqK0uuvv66VK1cqLi7OIU0CAADYK9chZ+fOnWrdurX160WLFqlhw4aKj4/XiBEjNH36dC1evNghTQIAANgr1yHnwoULCgwMtH69fv16tW/f3vp1/fr1lZKSkr/dAQAA5FGuLzwODAzUsWPHFBoaqmvXrmn79u168803ret///13FSlSxCFN4s7iz85xcsVoJ9cDAMA+uZ7JeeSRR/T6669rw4YNGjVqlIoWLarmzZtb1+/evVsPPPCAQ5oEAACwV65nct566y1169ZN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r7867NEHKIQK+O6uQuuDDz4wwsLCDHd3d6NBgwbG5s2bHVZr7dq1hqQcS58+ffK91s3qSDISEhLyvdYN/fv3N8LDww13d3cjICDAaN26tfH11187rN7NOPIW8p49exrBwcGGu7u7UaZMGaNnz57G4cOHHVLrr1auXGlUr17d8PDwMCpXrmx89NFHDq23evVqQ5Jx4MABh9YxDMNIT083hg0bZoSFhRmenp5G+fLljTfeeMPIyMhwaN1PP/3UKF++vOHu7m4EBQUZMTExxsWLF/Pl2Hf6Oc/OzjbGjBljBAYGGh4eHkbr1q3v+nt9p5oJCQk3XR8bG5vv9W7cpn6zZe3atfle748//jAeffRRIyQkxHB3dzeCg4ONzp07Gz/88EOeauHeZDEMBz9CFAAAoABwTQ4AADAlQg4AADAlQg4AADAlQg4AADAlQg4AADAlQg4AADAlQg4AADAlQg4Ap1i3bp0sFosuXrx4V8cpV66cpk2bli89ATA3Qg5wF1JSUtS/f3+FhITI3d1d4eHhGjZsmH777Teb7R5++GFZLJYcy/Xr13Os9/DwUJkyZdSpUyctWbIkR80b223evNlmPCMjQ/7+/rJYLFq3bt0tez579qxeeOEFhYWFycPDQ0FBQYqOjtb3339/998QAChECDlAHh09elT16tXToUOH9Mknn+jw4cOaPXu29WWu58+ft9l+4MCBOnXqlM3y13dA3Vh/5MgRffHFF6patap69eqlQYMG5agdGhqqhIQEm7GlS5eqWLFid+y7e/fu2rFjh+bNm6eDBw9qxYoVevjhh3MEMwC41xFygDyKiYmRu7u7vv76a7Vo0UJhYWFq3769vvnmG/3666964403bLYvWrSo9cWHN3sB4o31ZcuWVaNGjTRx4kT94x//UHx8vL755hubbfv06aNFixbpjz/+sI7NnTtXffr0uW3PFy9e1IYNGzRx4kS1bNlS4eHhatCggUaNGqXOnTtLkvr376+OHTva7JeZmanSpUtrzpw5kv6ceRoyZIiGDx+uEiVKKDAwUPHx8dYX2fr4+KhChQpatWpVjh6+//571axZU56enmrUqJF+/PFHm/VffPGFqlWrJg8PD5UrV06TJ0++7WcCgFsh5AB5cP78ea1evVovvvhijre3BwUFqXfv3vr00091t6+G69Onj0qUKJHjtFVkZKTKlSunL774QpJ0/Phxfffdd3r66adve7xixYqpWLFiWrZsmTIyMm66zbPPPquvvvpKp06dso59+eWXunLlinr27GkdmzdvnkqVKqUffvhBQ4YM0QsvvKDHH39cTZo00fbt29W2bVs9/fTTunLlis3xR44cqcmTJ2vr1q0KCAhQp06dlJmZKUlKTk5Wjx491KtXL+3Zs0fjxo3TmDFjlJiYmOvvGQDcQMgB8uDQoUMyDENVqlS56foqVarowoULOnv2rHVs5syZ1pBRrFgxvfzyy3es4+LiogcffFA///xzjnX9+/fX3LlzJUmJiYl65JFHFBAQcNvjubm5KTExUfPmzVPx4sXVtGlTjR49Wrt377Zu06RJE1WqVEnz58+3jiUkJOjxxx+3OR1Wq1Yt/e1vf1PFihU1atQoeXp6qlSpUho4cKAqVqyosWPH6rfffrM5tiTFxsaqTZs2qlGjhubNm6fTp09r6dKlkqQpU6aodevWGjNmjB588EH17dtXgwcP1nvvvXfH7xUA/C9CDnAX7Jmp6d27t3bu3GldRo0alesaFoslx/hTTz2lTZs26ejRo0pMTFT//v1zdbzu3bvr5MmTWrFihdq1a6d169apbt26NrMlzz77rPWan9OnT2vVqlU5jl+zZk3rv11dXeXv768aNWpYxwIDAyVJZ86csdmvcePG1n+XLFlSlSpV0r59+yRJ+/btU9OmTW22b9q0qQ4dOqSsrKxcfT4AuIGQA+RBhQoVZLFYrH+c/9e+fftUokQJm5kVPz8/VahQwbqUKlXqjnWysrJ06NAhRURE5Fjn7++vjh07asCAAbp69arat2+f6/49PT3Vpk0bjRkzRv/973/Vt29fxcbGWtc/88wzOnr0qDZt2qR//etfioiIUPPmzW2OUaRIEZuvLRaLzdiNYJadnZ3rvgAgPxFygDzw9/dXmzZtNHPmTJuLfyUpNTVVCxYsUM+ePW86A2OPefPm6cKFC+revftN1/fv31/r1q3TM888I1dX1zzXqVq1qi5fvmz92t/fX127dlVCQoISExPVr1+/PB/7f/311vcLFy7o4MGD1tN+VapUyXEr+/fff68HH3zwrj4fgPuT2503AXAzH374oZo0aaLo6Gi9/fbbioiI0E8//aSRI0eqTJkyeuedd+w63pUrV5Samqrr16/rxIkTWrp0qaZOnaoXXnhBLVu2vOk+7dq109mzZ+Xr65urGr/99psef/xx9e/fXzVr1pSPj4+2bdumSZMmqUuXLjbbPvvss+rYsaOysrLueNeWPcaPHy9/f38FBgbqjTfeUKlSpdS1a1dJ0ssvv6z69evrrbfeUs+ePbVp0yZ9+OGHmjlzZr7VB3D/IOQAeVSxYkVt27ZNsbGx6tGjh86fP6+goCB17dpVsbGxKlmypF3Hi4+PV3x8vNzd3eXv76/IyEh9+umnevTRR2+5j8ViydVprxuKFSumhg0baurUqTpy5IgyMzMVGhqqgQMHavTo0TbbRkVFKTg4WNWqVVNISIhdn+V2JkyYoGHDhunQoUOqXbu2Vq5cKXd3d0lS3bp1tXjxYo0dO1ZvvfWWgoODNX78ePXt2zff6gO4f1iMu73HFYApXbp0SWXKlFFCQoK6detW0O0AgN2YyQFgIzs7W+fOndPkyZNVvHhx60MCAeBeQ8gBYOP48eOKiIhQ2bJllZiYaPPqCQC4l3C6CgAAmBK3kAMAAFMi5AAAAFMi5AAAAFMi5AAAAFMi5AAAAFMi5AAAAFMi5AAAAFMi5AAAAFMi5AAAAFP6P3bKJ0+eW3lcAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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cgAAgCkRcgAAgCkRcgAAgCkRcgAAgCkRcgAAgClxC7lJDAwa4NR6yTru1HoAYDZJZz+Wxx8eBd4/62KWJKlRo0ZydXVVbGysYmNjC6s9UyDkAABwB9uyZYv8/PyKuo1iidNVAADAlAg5AADAlAg5AADAlAg5AADAlOwOOWPGjFFubm6e8fT0dD3++OOF0hQAAMDtsjvkzJ49Wy1bttSRI0esY+vWrVPt2rV1+PDhQm0OAACgoOy+hXzXrl169tlnVa9ePU2aNEkHDhzQ+++/r5EjR+qtt96y61gzZ87UzJkz9fPPP0uSatasqTfffFMdOnSQJF2+fFkvvfSSFi5cqKysLMXExGjGjBkKDg62t23TSzgz28kVY5xcDwAA+9gdckqVKqXFixfr9ddf17PPPis3NzetWrVKbdq0sbt4+fLlNX78eFWpUkWGYWju3Lnq2rWrtm/frpo1a+rFF1/U//t//09LliyRv7+/Bg8erO7du+v777+3uxYAALi7FOjC4w8++EDvv/++Hn/8cVWqVElDhw7Vzp077T5O586d9dBDD6lKlSq699579c4778jHx0ebNm1Senq6Zs+ercmTJ+vBBx9UVFSUEhMT9b///U+bNm0qSNsAAOAuYnfIad++vd566y3NnTtX8+fP1/bt23X//feradOmmjhxYoEbycnJ0cKFC3Xx4kU1a9ZMKSkpys7OVnR0tHWbatWqKSIiQhs3brzhcbKyspSRkWGzAACAu4/dIScnJ0e7du3SI488Ikny8vLSzJkz9emnn2rKlCl2N7B79275+PjIw8NDzz33nJYtW6YaNWooLS1N7u7uCggIsNk+ODhYaWlpNzxefHy8/P39rUt4eLjdPQEAgDuf3SFnzZo1CgsLyzPesWNH7d692+4Gqlatqh07dmjz5s16/vnn1adPH+3Zs8fu41wzatQopaenW5fU1NQCHwsAANy5CnRNznfffacnn3xSzZo106+//ipJmjdvnvbt22f3sdzd3VW5cmVFRUUpPj5edevW1fvvv6+QkBBduXJFFy5csNn+1KlTCgkJueHxPDw85OfnZ7MAAIC7j90h57PPPlNMTIy8vLy0fft2ZWX9+ar39PR0vfvuu7fdUG5urrKyshQVFaUSJUooOTnZum7//v06duyYmjVrdtt1AACAudl9C/m4ceM0a9YsPf3001q4cKF1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",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "PUSCHTransmitter(pusch_config).pilot_pattern.show();"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a84a7981",
   "metadata": {},
   "source": [
    "We can see from the pilot patterns above, that we have now a single transmitter sending two streams. Both streams will be precoded and transmit over four antenna ports. From a channel estimation perspective at the receiver, however, this scenario is identical to the previous one with two single-antenna transmitters. The receiver will simply estimate the effective channel (including precoding) for every configured DMRS port."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fba3ecaa",
   "metadata": {},
   "source": [
    "### Controlling the Number of DMRS Symbols in a Slot\n",
    "\n",
    "How can we add additional DMRS symbols to the resource grid to enable channel estimation for high-speed scenarios? \n",
    "\n",
    "This can be controlled with the parameter ``DMRS.additional_position``.\n",
    "In the next cell, we configure one additional DMRS symbol to the pattern and visualize it. You can try setting it to different values and see the impact."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "4f6fe409",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-03-08T23:46:23.289610Z",
     "iopub.status.busy": "2025-03-08T23:46:23.289307Z",
     "iopub.status.idle": "2025-03-08T23:46:23.816762Z",
     "shell.execute_reply": "2025-03-08T23:46:23.816245Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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HKCA3n33Xe3YsUPLly/Xr7/+qtjYWC1cuFAPP/zwDd8bGhqqEydO5Bq/NhYWFpbve0eMGGFzj542bdpYT8q9EX9/f3Xo0EEdOnRQiRIlNG/ePG3ZskVt2rS54XvzCgI5OTmqW7eupkyZkud7roWSw4cPq3379qpRo4amTJmi8PBweXp66r///a+mTp2a65wad3f3PPeX37hxgztfhIaGau3atTIMQxaLxTpekJ83APMg5AAFkJqaqri4OPXo0UM9evRQTk6O5s2bp1GjRqlLly42sxJ5adCggTZs2KCcnBybk4+3bNmikiVL6s4778z3vS+88IIeeeQR6+syZcoU6jM0btxY8+bNs/6h/+sf/4K64447tGvXLrVv3/6671+5cqUyMzO1YsUKm1mav36d5UwNGjTQv/71L+3bt0+1atWyjm/ZssW6HoD5cU4OUADPPPOMDMPQe++9J0lyc3PT7NmzdebMGeul1ddz//336+TJk1q6dKl17MyZM1qyZIm6deuW5/kj19SqVUvR0dHWJSoqKt9tL126lO/l0atWrZIkVa9eXZKsNy88f/78Dfu/pk+fPvr111+VkJCQa90ff/yhixcvSvr/GZi/zrikp6crMTGxwLVuRo8ePVSiRAnNnDnTOmYYhmbPnq0KFSqoZcuWLukDQNFiJge4gWXLlumzzz6zXgZ9TcOGDRUbG6v3339fAwYMsN53Ji/333+/mjdvroEDB2rv3r3WOx5nZ2frtddec1ivly5dUsuWLdW8eXN16tRJ4eHhOn/+vJYvX64NGzaoZ8+eatiwoaQ/Z2VKly6t2bNny8/PT76+vmrWrJkqV66c7/4fffRRLV68WE8++aTWrl2rVq1aKTs7W/v379fixYu1evVqNW7cWB07dpSnp6e6deumJ554QhcuXFBCQoLKly+f59d2jlaxYkWNHDlSb7/9trKystSkSRPrz2DBggX5fg0GwGSK9NouoJjI7xLy33//3ahYsaLRoEGDPO+Sm5GRYYSFhRmNGjW64V10z549awwePNgIDAw0SpYsabRp08bYunWrwz6DYfx5x+OEhASjZ8+eRmRkpOHl5WWULFnSaNiwofH2228bmZmZNtt/9tlnRq1atQwPDw+by8nbtGlj1K5dO88aV65cMSZOnGjUrl3b8PLyMsqUKWNERUUZr732mpGenm7dbsWKFUa9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Hh5ud08AAODWZ3fIWbNmjcLCwnKNd+nSRXv27LG7gerVq2vnzp3asmWLnnrqKfXv31979+61ez/XjBkzRunp6dYlNTW10PsCAAC3rkKdk7NhwwY98sgjatGihX799VdJ0vz587V//3679+Xp6amqVasqKipK8fHxql+/vt59912FhIToypUrOn/+vM32J0+eVEhISL778/Lykr+/v80CAABuP3aHnE8//VQxMTHy8fHRjh07lJn556Pe09PT9dZbb910Qzk5OcrMzFRUVJRKlCih5ORk67oDBw7o6NGjatGixU3XAQAA5mb3JeRvvPGGZs+erccee0yLFi2yjrdq1UpvvPGGXfsaM2aMOnfurIiICP3+++9auHCh1q1bp9WrVysgIECDBw/WqFGjVLZsWfn7++uZZ55RixYt1Lx5c3vbNr0hQYNdWi9Zx1xaD0DeOPaB/Nkdcg4cOKC7774713hAQECur5Zu5NSpU3rsscd04sQJBQQEqF69elq9erU6dOggSZo6darc3NzUu3dvm5sBAgAA3IjdISckJESHDh1SpUqVbMY3btyoKlWq2LWvOXOuf6dOb29vzZgxQzNmzLC3TQAAcJuz+5ycIUOGaMSIEdqyZYssFouOHz+uBQsW6Pnnn9dTTz3ljB4BAADsZvdMzksvvaScnBy1b99ely5d0t133y0vLy89//zzeuaZZ5zRIwAAgN3sDjkWi0WvvPKKRo8erUOHDunChQuqVauWSpUq5Yz+AAAACsXukHONp6enatWq5cheAAAAHKZAIadXr14F3uHSpUsL3QwKL+H09U/idrwYF9cDkBeOfSB/BTrx+K/PgvL391dycrK2bdtmXZ+SkqLk5GQFBAQ4rVEAAAB7FGgmJzEx0frvF198UX369NHs2bPl7u4u6c+Hdj799NM8QgEAABQbdl9CPnfuXD3//PPWgCNJ7u7uGjVqlObOnevQ5gAAAArL7pBz9erVPB/EuX//fuXk5DikKQAAgJtl99VVAwcO1ODBg3X48GE1bdpUkrRlyxZNmDBBAwcOdHiDAAAAhWF3yHnnnXcUEhKiyZMn68SJE5Kk0NBQjR49Ws8995zDGwQAACgMu0OOm5ubXnjhBb3wwgvKyMiQJE44BgAAxU6hbwYoEW6KkyFBg11aL1nHXFoPQN449oH82X3i8cmTJ/Xoo48qLCxMHh4ecnd3t1kAAACKA7tncgYMGKCjR49q7NixCg0NlcVicUZfAAAAN8XukLNx40Zt2LBBDRo0cEI7AAAAjmH311Xh4eEyDMMZvQAAADiM3SFn2rRpeumll/Tzzz87oR0AAADHsPvrqr59++rSpUu64447VLJkSZUoUcJm/dmzZx3WHAAAQGHZHXKmTZvmhDYAAAAcy+6Q079/f2f0gZuUcHqOiyvGuLgegLxw7AP5K3DIuXZ34xvhBoEAAKA4KHDIKV269HXviWMYhiwWi7Kzsx3SGAAAwM0ocMhZu3atM/sAAABwqAKHnDZt2jizDwAAAIey+z45AAAAtwJCDgAAMCVCDgAAMCW775OD4mlI0GCX1kvWMZfWA5A3jn0gf3bN5GRlZcnDw0Pff/+9s/oBAABwCLtCTokSJRQREcG9cAAAQLFn9zk5r7zyil5++WUexAkAAIo1u8/Jef/993Xo0CGFhYUpMjJSvr6+Nuu3b9/usOYAAAAKy+6Q07NnTye0AQAA4Fh2h5y4uDhn9AEAAOBQhbqE/Pz58/rkk090+PBhjR49WmXLltX27dsVHBysChUqOLpHFEDC6Tkurhjj4noA8sKxD+TP7pCze/duRUdHKyAgQD///LOGDBmismXLaunSpTp69Kg+/PBDZ/QJAABgF7uvrho1apQGDBiggwcPytvb2zp+77336ptvvnFocwAAAIVld8jZunWrnnjiiVzjFSpUUFpamkOaAgAArjNgwACbC4vuuecejRw5ssj6cRS7Q46Xl5cyMjJyjf/4448KCgpySFMAAMCxBgwYIIvFIovFIk9PT1WtWlXjx4/X1atX9e677yopKanQ+05KSlLp0qUd1quj2B1yunfvrvHjxysrK0uSZLFYdPToUb344ovq3bu3wxsEAACO0alTJ504cUIHDx7Uc889p3Hjxuntt99WQEBAsQwpN8vukDN58mRduHBB5cuX1x9//KE2bdqoatWq8vPz05tvvumMHgEAgAN4eXkpJCREkZGReuqppxQdHa0VK1bk+rrq786dO6fHHntMZcqUUcmSJdW5c2cdPHhQkrRu3ToNHDhQ6enp1pmicePGSZJmzpypatWqydvbW8HBwbr//vtd8Cn/n91XVwUEBGjNmjXauHGjdu/erQsXLqhRo0aKjo52Rn8AAOA6/n4KiZeXl7y8vAr0Xh8fH/3222833O7aBUcrVqyQv7+/XnzxRd17773au3evWrZsqWnTpunVV1/VgQMHJEmlSpXStm3bNHz4cM2fP18tW7bU2bNntWHDBvs/4E0o1H1yJOmuu+7SXXfd5checBOGBA12ab1kHXNpPQB549hHeHi4zeu4uDjrTEp+DMNQcnKyVq9erWeeeUanT5/Od9tr4ebbb79Vy5YtJUkLFixQeHi4li9frgceeEABAQGyWCwKCQmxvu/o0aPy9fVV165d5efnp8jISDVs2LDwH7QQChRypk+frqFDh8rb21vTp0+/7rbDhw93SGMAAODGUlNT5e/vb319vVmczz//XKVKlVJWVpZycnL08MMPa9y4cYqNjc33Pfv27ZOHh4eaNWtmHQsMDFT16tW1b9++fN/XoUMHRUZGqkqVKurUqZM6deqk++67TyVLlrTzExZegULO1KlT1a9fP3l7e2vq1Kn5bmexWAg5AAC4kL+/v03IuZ62bdtq1qxZ8vT0VFhYmDw8Cv2Fzg35+flp+/btWrdunb788ku9+uqrGjdunLZu3eqyk5wL9OmOHDmS578BAMCtw9fXV1WrVrXrPTVr1tTVq1e1ZcsW69dVv/32mw4cOKBatWpJkjw9PZWdnZ3rvR4eHoqOjlZ0dLTi4uJUunRpff311+rVq9fNf5gCsOvqqqysLN1xxx3XnZ4CAADmUa1aNfXo0UNDhgzRxo0btWvXLj3yyCOqUKGCevToIUmqVKmSLly4oOTkZJ05c0aXLl3S559/runTp2vnzp365Zdf9OGHHyonJ0fVq1d3We92hZwSJUro8uXLzuoFAAAUQ4mJiYqKilLXrl3VokULGYah//73vypRooQkqWXLlnryySfVt29fBQUFadKkSSpdurSWLl2qdu3aqWbNmpo9e7Y++ugj1a5d22V92/1lXGxsrCZOnKh//etfTv0uDwAAOM717mj893Xr1q2zeV2mTJkbPoB71qxZmjVr1nX342p2p5StW7cqOTlZX375perWrStfX1+b9UuXLnVYcwAAAIVld8gpXbo0j28ohhJOz3FxxRgX1wOQF459IH92hZyrV6+qbdu26tixo80NfwAAAIobu0489vDw0JNPPqnMzExn9QMAAOAQdj+gs2nTptqxY4czegEAAHAYu8/Jefrpp/Xcc8/p2LFjioqKynXicb169RzWHAAAQGHZHXIefPBBSbbPqLJYLDIMQxaLJc87HgIAALia3SGHxzoAAIBbgd0hJzIy0hl94CYNCRrs0nrJOubSegDyxrEP5K/Qtyzeu3evjh49qitXrtiMd+/e/aabAgAAuFl2h5yffvpJ9913n/bs2WM9F0f687wcSZyTAwAAigW7LyEfMWKEKleurFOnTqlkyZL64Ycf9M0336hx48ZF/owKAACAa+yeydm0aZO+/vprlStXTm5ubnJzc9Ndd92l+Ph4DR8+nHvoAACAYsHumZzs7Gz5+flJksqVK6fjx49L+vOE5AMHDji2OwAAgEKyeyanTp062rVrlypXrqxmzZpp0qRJ8vT01AcffKAqVao4o0cAAAC72R1y/vGPf+jixYuSpPHjx6tr165q3bq1AgMD9fHHHzu8QQAAgMKwO+TExMRY/121alXt379fZ8+eVZkyZaxXWBVUfHy8li5dqv3798vHx0ctW7bUxIkTVb16des2ly9f1nPPPadFixYpMzNTMTExmjlzpoKDg+1t3dQSTs9xccWYG28CwOk49oH82X1OTnp6us6ePWszVrZsWZ07d04ZGRl27Wv9+vWKjY3V5s2btWbNGmVlZaljx47WmSJJevbZZ7Vy5UotWbJE69ev1/Hjx9WrVy972wYAALeZQj27qlu3bnr66adtxhcvXqwVK1bov//9b4H39cUXX9i8TkpKUvny5ZWSkqK7775b6enpmjNnjhYuXKh27dpJkhITE1WzZk1t3rxZzZs3t7d9AABwm7B7JmfLli1q27ZtrvF77rlHW7Zsualm0tPTJf05MyRJKSkpysrKUnR0tHWbGjVqKCIiQps2bcpzH5mZmcrIyLBZAADA7cfukJOZmamrV6/mGs/KytIff/xR6EZycnI0cuRItWrVSnXq1JEkpaWlydPTU6VLl7bZNjg4WGlpaXnuJz4+XgEBAdYlPDy80D0BAIBbl90hp2nTpvrggw9yjc+ePVtRUVGFbiQ2Nlbff/+9Fi1aVOh9SNKYMWOUnp5uXVJTU29qfwAA4NZk9zk5b7zxhqKjo7Vr1y61b99ekpScnKytW7fqyy+/LFQTw4YN0+eff65vvvlGFStWtI6HhIToypUrOn/+vM1szsmTJxUSEpLnvry8vOTl5VWoPgAAgHnYPZPTqlUrbdq0SRUrVtTixYu1cuVKVa1aVbt371br1q3t2pdhGBo2bJiWLVumr7/+WpUrV7ZZHxUVpRIlSig5Odk6duDAAR09elQtWrSwt3UAAHAbsXsmR5IaNGighQsX3nTx2NhYLVy4UJ999pn8/Pys59kEBATIx8dHAQEBGjx4sEaNGqWyZcvK399fzzzzjFq0aMGVVX8zJGiwS+sl65hL6wHIG8c+kL9ChZzs7GwtW7ZM+/btkyTVqlVLPXr0kIeHfbubNWuWpD+vzPqrxMREDRgwQJI0depUubm5qXfv3jY3AwQAALgeu0PODz/8oO7duystLc16Z+KJEycqKChIK1eutF4ZVRCGYdxwG29vb82YMUMzZsywt1UAAHAbs/ucnMcff1y1a9fWsWPHtH37dm3fvl2pqamqV6+ehg4d6oweAQAA7Gb3TM7OnTu1bds2lSlTxjpWpkwZvfnmm2rSpIlDmwMAACgsu2dy7rzzTp08eTLX+KlTp1S1alWHNAUAAHCzChRy/vqIhPj4eA0fPlyffPKJjh07pmPHjumTTz7RyJEjNXHiRGf3CwAAUCAF+rqqdOnSslgs1teGYahPnz7WsWsnEHfr1k3Z2dlOaBMAAMA+BQo5a9eudXYfuEkJp+e4uGKMi+sByAvHPpC/AoWcNm3aOLsPAAAAh7L76qpvvvnmuuvvvvvuQjcDAADgKHaHnL/fnViSzfk6nJMDAACKA7svIT937pzNcurUKX3xxRdq0qRJoZ9CDgAA4Gh2z+QEBATkGuvQoYM8PT01atQopaSkOKQxAACAm2H3TE5+goODdeDAAUftDgAA4KbYPZOze/dum9eGYejEiROaMGGCGjRo4Ki+YKchQYNdWi9Zx1xaD0DeOPaB/Nkdcho0aCCLxZLrCeLNmzfX3LlzHdYYAADAzbA75Bw5csTmtZubm4KCguTt7e2wpgAAAG6W3SEnMjLSGX0AAAA4VIFPPN60aZM+//xzm7EPP/xQlStXVvny5TV06FBlZmY6vEEAAIDCKHDIGT9+vH744Qfr6z179mjw4MGKjo7WSy+9pJUrVyo+Pt4pTQIAANirwCFn586dat++vfX1okWL1KxZMyUkJGjUqFGaPn26Fi9e7JQmAQAA7FXgkHPu3DkFBwdbX69fv16dO3e2vm7SpIlSU1Md2x0AAEAhFfjE4+DgYB05ckTh4eG6cuWKtm/frtdee826/vfff1eJEiWc0iRuLOH0HBdXjHFxPQB54dgH8lfgmZx7771XL730kjZs2KAxY8aoZMmSat26tXX97t27dccddzilSQAAAHsVeCbn9ddfV69evdSmTRuVKlVK8+bNk6enp3X93Llz1bFjR6c0CQAAYK8Ch5xy5crpm2++UXp6ukqVKiV3d3eb9UuWLFGpUqUc3iAAAEBhOOQp5JJUtmzZm24GAADAURz2FHIAAIDihJADAABMiZADAABMye5zclA8DQka7NJ6yTrm0noA8saxf+tav7693L19C/3+7MsXJb2rJk2ayN3dXbGxsYqNjXVcgyZAyAEA4Ba2detW+fv7F3UbxRJfVwEAAFMi5AAAAFMi5AAAAFMi5AAAAFMi5AAAAFPi6iqTSDg9x8UVY1xcD0BeOPaB/DGTAwAATImQAwAATImQAwAATImQAwAATImQAwAATImQAwAATImQAwAATIn75JjEkKDBLq2XrGMurQcgbxz7QP6YyQEAAKZEyAEAAKZEyAEAAKZEyAEAAKZEyAEAAKZEyAEAAKZEyAEAAKbEfXJMIuH0HBdXjHFxPQB54dgH8sdMDgAAMCVCDgAAMCVCDgAAMCVCDgAAMCVCDgAAMCVCDgAAMCVCDgAAMCXuk2MSQ4IGu7Reso65tB6AvHHsA/ljJgcAAJgSIQcAAJgSIQcAAJgSIQcAAJgSIQcAAJgSIQcAAJhSkV5C/s033+jtt99WSkqKTpw4oWXLlqlnz57W9YZhKC4uTgkJCTp//rxatWqlWbNmqVq1akXXdDGVcHqOiyvGuLgegLxw7AP5K9KZnIsXL6p+/fqaMWNGnusnTZqk6dOna/bs2dqyZYt8fX0VExOjy5cvu7hTAABwqynSmZzOnTurc+fOea4zDEPTpk3TP/7xD/Xo0UOS9OGHHyo4OFjLly/Xgw8+6MpWAQDALabYnpNz5MgRpaWlKTo62joWEBCgZs2aadOmTfm+LzMzUxkZGTYLAAC4/RTbkJOWliZJCg4OthkPDg62rstLfHy8AgICrEt4eLhT+wQAAMVTsQ05hTVmzBilp6dbl9TU1KJuCQAAFIFiG3JCQkIkSSdPnrQZP3nypHVdXry8vOTv72+zAACA20+xDTmVK1dWSEiIkpOTrWMZGRnasmWLWrRoUYSdAQCAW0GRXl114cIFHTp0yPr6yJEj2rlzp8qWLauIiAiNHDlSb7zxhqpVq6bKlStr7NixCgsLs7mXDv40JGiwS+sl65hL6wHIG8c+kL8iDTnbtm1T27Ztra9HjRolSerfv7+SkpL0wgsv6OLFixo6dKjOnz+vu+66S1988YW8vb2LqmUAAHCLKNKQc88998gwjHzXWywWjR8/XuPHj3dhVwAAwAyK7Tk5AAAAN4OQAwAATImQAwAATImQAwAATImQAwAATKlIr66C4yScnuPiijEurgcgLxz7QP6YyQEAAKZEyAEAAKZEyAEA4DYwYMAAWSwWWSwWlShRQsHBwerQoYPmzp2rnJycAu8nKSlJpUuXdl6jDkTIAQDgNtGpUyedOHFCP//8s1atWqW2bdtqxIgR6tq1q65evVrU7TkcIQcAgNuEl5eXQkJCVKFCBTVq1Egvv/yyPvvsM61atUpJSUmSpClTpqhu3bry9fVVeHi4nn76aV24cEGStG7dOg0cOFDp6enWWaFx48ZJkubPn6/GjRvLz89PISEhevjhh3Xq1Kki+qR/IuQAAHALy8jIsFkyMzPten+7du1Uv359LV26VJLk5uam6dOn64cfftC8efP09ddf64UXXpAktWzZUtOmTZO/v79OnDihEydO6Pnnn5ckZWVl6fXXX9euXbu0fPly/fzzzxowYIBDP6u9uITcJIYEDXZpvWQdc2k9AHnj2Ed4eLjN67i4OOvsSkHVqFFDu3fvliSNHDnSOl6pUiW98cYbevLJJzVz5kx5enoqICBAFotFISEhNvsYNGiQ9d9VqlTR9OnT1aRJE124cEGlSpWy70M5CCEHAIBbWGpqqvz9/a2vvby87N6HYRiyWCySpK+++krx8fHav3+/MjIydPXqVV2+fFmXLl1SyZIl891HSkqKxo0bp127duncuXPWk5mPHj2qWrVq2d2TI/B1FQAAtzB/f3+bpTAhZ9++fapcubJ+/vlnde3aVfXq1dOnn36qlJQUzZgxQ5J05cqVfN9/8eJFxcTEyN/fXwsWLNDWrVu1bNmyG77P2ZjJAQDgNvb1119rz549evbZZ5WSkqKcnBxNnjxZbm5/zoMsXrzYZntPT09lZ2fbjO3fv1+//fabJkyYYP36bNu2ba75ANfBTA4AALeJzMxMpaWl6ddff9X27dv11ltvqUePHuratasee+wxVa1aVVlZWXrvvff0008/af78+Zo9e7bNPipVqqQLFy4oOTlZZ86c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6NAhjR49WjVq1HDIsX+j43zkyJF64403VK1aNVWuXFljx45VWFiYevbs6bSaZ8+e1dGjR633qrkWnENCQgo1g3S9eqGhobr//vu1fft2ff7558rOzrb+/ilbtqw8PT0dWi8wMFBvvvmmunfvrtDQUJ05c0YzZszQr7/+6rRbH6AYKuKru4qt9957z4iIiDA8PT2Npk2bGps3b3ZarbVr1xqSci39+/d3eK286kgyEhMTHV7rmkGDBhmRkZGGp6enERQUZLRv39748ssvnVYvL868hLxv375GaGio4enpaVSoUMHo27evcejQIafU+quVK1caderUMby8vIwaNWoYH3zwgVPrrV692pBkHDhwwKl1DMMwMjIyjBEjRhgRERGGt7e3UaVKFeOVV14xMjMznVr3448/NqpUqWJ4enoaISEhRmxsrHH+/HmH7PtGx3lOTo4xduxYIzg42PDy8jLat29/0z/rG9VMTEzMc31cXJzD6127TD2vZe3atQ6v98cffxj33XefERYWZnh6ehqhoaFG9+7dje+++65QtXBrshiGk28hCgAAUAQ4JwcAAJgSIQcAAJgSIQcAAJgSIQcAAJgSIQcAAJgSIQcAAJgSIQcAAJgSIQeAS6xbt04Wi0Xnz5+/qf1UqlRJ06ZNc0hPAMyNkAPchNTUVA0aNEhhYWHy9PRUZGSkRowYod9++81mu3vuuUcWiyXXcvXq1Vzrvby8VKFCBXXr1k1Lly7NVfPadps3b7YZz8zMVGBgoCwWi9atW5dvz6dPn9ZTTz2liIgIeXl5KSQkRDExMfr2229v/gcCAMUIIQcopJ9++kmNGzfWwYMH9dFHH+nQoUOaPXu29WGuZ8+etdl+yJAhOnHihM3y12dAXVt/+PBhffrpp6pVq5YefPBBDR06NFft8PBwJSYm2owtW7ZMpUqVumHfvXv31o4dOzRv3jz9+OOPWrFihe65555cwQwAbnWEHKCQYmNj5enpqS+//FJt2rRRRESEOnfurK+++kq//vqrXnnlFZvtS5YsaX3wYV4PQLy2vmLFimrevLkmTpyof/7zn0pISNBXX31ls23//v21aNEi/fHHH9axuXPnqn///tft+fz589qwYYMmTpyotm3bKjIyUk2bNtWYMWPUvXt3SdKgQYPUtWtXm/dlZWWpfPnymjNnjqQ/Z56eeeYZjRw5UmXKlFFwcLASEhKsD7L18/NT1apVtWrVqlw9fPvtt6pXr568vb3VvHlzff/99zbrP/30U9WuXVteXl6qVKmSJk+efN3PBAD5IeQAhXD27FmtXr1aTz/9dK6nt4eEhKhfv376+OOPdbOPhuvfv7/KlCmT62urqKgoVapUSZ9++qkk6ejRo/rmm2/06KOPXnd/pUqVUqlSpbR8+XJlZmbmuc3jjz+uL774QidOnLCOff7557p06ZL69u1rHZs3b57KlSun7777Ts8884yeeuopPfDAA2rZsqW2b9+ujh076tFHH9WlS5ds9j969GhNnjxZW7duVVBQkLp166asrCxJUkpKivr06aMHH3xQe/bs0bhx4zR27FglJSUV+GcGANcQcoBCOHjwoAzDUM2aNfNcX7NmTZ07d06nT5+2js2cOdMaMkqVKqXnnnvuhnXc3Nx055136ueff861btCgQZo7d64kKSkpSffee6+CgoKuuz8PDw8lJSVp3rx5Kl26tFq1aqWXX35Zu3fvtm7TsmVLVa9eXfPnz7eOJSYm6oEHHrD5Oqx+/fr6xz/+oWrVqmnMmDHy9vZWuXLlNGTIEFWrVk2vvvqqfvvtN5t9S1JcXJw6dOigunXrat68eTp58qSWLVsmSZoyZYrat2+vsWPH6s4779SAAQM0bNgwvf322zf8WQHA3xFygJtgz0xNv379tHPnTusyZsyYAtewWCy5xh955BFt2rRJP/30k5KSkjRo0KAC7a937946fvy4VqxYoU6dOmndunVq1KiRzWzJ448/bj3n5+TJk1q1alWu/derV8/6b3d3dwUGBqpu3brWseDgYEnSqVOnbN7XokUL67/Lli2r6tWra9++fZKkffv2qVWrVjbbt2rVSgcPHlR2dnaBPh8AXEPIAQqhatWqslgs1j/Of7dv3z6VKVPGZmYlICBAVatWtS7lypW7YZ3s7GwdPHhQlStXzrUuMDBQXbt21eDBg3X58mV17ty5wP17e3urQ4cOGjt2rP73v/9pwIABiouLs65/7LHH9NNPP2nTpk3697//rcqVK6t169Y2+yhRooTNa4vFYjN2LZjl5OQUuC8AcCRCDlAIgYGB6tChg2bOnGlz8q8kpaWlacGCBerbt2+eMzD2mDdvns6dO6fevXvnuX7QoEFat26dHnvsMbm7uxe6Tq1atXTx4kXr68DAQPXs2VOJiYlKSkrSwIEDC73vv/vrpe/nzp3Tjz/+aP3ar2bNmrkuZf/2229155133tTnA3B78rjxJgDy8v7776tly5aKiYnRG2+8ocqVK+uHH37Q6NGjVaFCBb355pt27e/SpUtKS0vT1atXdezYMS1btkxTp07VU089pbZt2+b5nk6dOun06dPy9/cvUI3ffvtNDzzwgAYNGqR69erJz89P27Zt06RJk9SjRw+bbR9//HF17dpV2dnZN7xqyx7jx49XYGCggoOD9corr6hcuXLq2bOnJOm5555TkyZN9Prrr6tv377atGmT3n//fc2cOdNh9QHcPgg5QCFVq1ZN27ZtU1xcnPr06aOzZ88qJCREPXv2VFxcnMqWLWvX/hISEpSQkCBPT08FBgYqKipKH3/8se67775832OxWAr0tdc1pUqVUrNmzTR16lQdPnxYWVlZCg8P15AhQ/Tyyy/bbBsdHa3Q0FDVrl1bYWFhdn2W65kwYYJGjBihgwcPqkGDBlq5cqU8PT0lSY0aNdLixYv16quv6vXXX1doaKjGjx+vAQMGOKw+gNuHxbjZa1wBmNKFCxdUoUIFJSYmqlevXkXdDgDYjZkcADZycnJ05swZTZ48WaVLl7beJBAAbjWEHAA2jh49qsqVK6tixYpKSkqyefQEANxK+LoKAACYEpeQAwAAUyLkAAAAUyLkAAAAUyLkAAAAUyLkAAAAUyLkAAAAUyLkAAAAUyLkAAAAUyLkAAAAU/o/yIeXQqRVse4AAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "pusch_config.dmrs.additional_position = 1\n",
    "\n",
    "# In order to reduce the number of figures, we here only show\n",
    "# the pilot pattern of the first stream\n",
    "PUSCHTransmitter(pusch_config).pilot_pattern.show(stream_ind = 0);"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "aa57e45d",
   "metadata": {},
   "source": [
    "### How to control the number of available DMRS ports?\n",
    "\n",
    "There are two factors that determine the available number of DMRS ports, i.e., layers, that can be transmitted. \n",
    "The first is the DMRS Configuration and the second the length of a DMRS symbol. Both parameters can take two values so that there are four options in total.\n",
    "In the previous example, the DMRS Configuration Type 1 was used. In this case, there are two CDM groups and each group uses either odd or even subcarriers. This leads to four available DMRS ports.\n",
    "With DMRS Configuration Type 2, there are three CDM groups and each group uses two pairs of adjacent subcarriers per PRB, i.e., four pilot-carrying subcarriers. That means that there are six available DMRS ports.\n",
    "\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "cfe0fcb7",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-03-08T23:46:23.820657Z",
     "iopub.status.busy": "2025-03-08T23:46:23.820394Z",
     "iopub.status.idle": "2025-03-08T23:46:24.340715Z",
     "shell.execute_reply": "2025-03-08T23:46:24.340171Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Available DMRS ports: [0, 1, 2, 3]\n"
     ]
    },
    {
     "data": {
      "image/png": "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O3OO1NRUSVKpUqUKpF5mZqbmzZuny5cvq0mTJk6tFRsbq44dO9r8b+ksBw4cUEhIiCpWrKjevXvr6NGjTq23bNky1a9fX4888ojKli2r++67T9OnT3dqzRuuXbumf//73+rfv79dD721R9OmTZWUlKT9+/dLknbs2KENGzaoQ4cOTqknSdevX1dmZma25wl5eXk5/cjckSNHdOrUKZv/r/r7+6tRo0am/L1zQ2pqqiwWi0qUKOH0WteuXdMnn3wif39/1alTx+n1UDTcEQ/oLEjnzp1TZmZmtqecBwYGau/evYXUlXNkZWVpyJAhatasmWrWrOnUWrt27VKTJk109epV+fj4aPHixapevbrT6s2bN09bt2512PUUN9OoUSMlJiaqSpUqOnnypN566y21aNFCP//8s3x9fZ1S8/Dhw5o6daqGDh2qESNGaPPmzRo0aJDc3d3Vp08fp9S8YcmSJbp48aL69u3rtBqvv/660tLSVLVqVbm6uiozM1Pvvvuuevfu7bSavr6+atKkid5++21Vq1ZNgYGB+vzzz7Vx40ZVqlTJaXUl6dSpU5KU4++dG+vM5urVq3rttdf06KOPOvWhnStWrFCvXr105coVBQcHa82aNSpdurTT6qFoIeTcxWJjY/Xzzz87/b9SJalKlSravn27UlNT9cUXX6hPnz5av369U4JOSkqKBg8erDVr1hTIU37/fnShdu3aatSokcLDw7VgwQI99dRTTqmZlZWl+vXr67333pMk3Xffffr55581bdo0p4ecGTNmqEOHDgoJCXFajQULFmjOnDmaO3euatSooe3bt2vIkCEKCQlx6vubPXu2+vfvr3LlysnV1VX16tXTo48+quTkZKfVvBtlZGSoR48eMgxDU6dOdWqtVq1aafv27Tp37pymT5+uHj16aNOmTSpbtqxT66Jo4HTV/yhdurRcXV11+vRpm/HTp08rKCiokLpyvAEDBmjFihVau3atypcv7/R67u7uqlSpkiIjIxUfH686deroww8/dEqt5ORknTlzRvXq1ZObm5vc3Ny0fv16TZo0SW5ubsrMzHRK3RtKlCihe++9VwcPHnRajeDg4GwBsVq1ak4/Tfbbb7/p66+/1tNPP+3UOsOGDdPrr7+uXr16qVatWnriiSf00ksvKT4+3ql177nnHq1fv16XLl1SSkqKfvrpJ2VkZKhi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KlWqaPbs2daxhIQEPfLIIzanw+rUqaN//OMfqly5soYPHy5PT0+VLl1azzzzjCpXrqw333xTv//+u83ckhQXF6e2bduqVq1amjVrlk6fPq3FixdLksaPH682bdpo5MiRuvfee9W3b18NGDBA77///i1/VgDwvwg5wG2w50hN7969tX37dusyfPjwPNewWCzZxh9//HFt3LhRhw8fVmJiovr375+n+bp3764TJ05o2bJlat++vdatW6d69erZHC15+umnrdf8nD59WitXrsw2f+3ata3/dnV1VUBAgGrVqmUdCwwMlCSdOXPGZr8mTZpY/12qVClVqVJFe/bskSTt2bNHzZo1s9m+WbNmOnDggDIzM/P0/gDgBkIOkA+VKlWSxWKx/nH+X3v27FHJkiVtjqz4+/urUqVK1qV06dK3rJOZmakDBw4oIiIi27qAgAB16tRJTz31lK5evaoOHTrkuX9PT0+1bdtWI0eO1A8//KC+ffsqLi7Ouv7JJ5/U4cOHtXHjRv373/9WRESEWrRoYTNHsWLFbF5bLBabsRvBLCsrK899AYAjEXKAfAgICFDbtm01ZcoUm4t/JenUqVOaM2eOevbsmeMRGHvMmjVLFy5cUPfu3XNc379/f61bt05PPvmkXF1d812nevXqunz5svV1QECAunbtqoSEBCUmJqpfv375nvt//f3W9wsXLmj//v3W037VqlXLdiv7999/r3vvvfe23h+Au5PbrTcBkJOPP/5YTZs2VXR0tN555x1FRETol19+0bBhw1SuXDm9++67ds135coVnTp1StevX9exY8e0ePFiTZgwQS+88IJatWqV4z7t27fX2bNn5efnl6cav//+ux555BH1799ftWvXlq+vr7Zs2aJx48apS5cuNts+/fTT6tSpkzIzM29515Y9Ro8erYCAAAUGBuqNN95Q6dKl1bVrV0nSyy+/rAYNGujtt99Wz549tXHjRn388ceaMmWKw+oDuHsQcoB8qly5srZs2aK4uDj16NFD58+fV1BQkLp27aq4uDiVKlXKrvmmT5+u6dOny93dXQEBAYqMjNT8+fP10EMP5bqPxWLJ02mvG3x8fNSoUSNNmDBBhw4dUkZGhkJDQ/XMM89oxIgRNttGRUUpODhYNWrUUEhIiF3v5WbGjBmjwYMH68CBA6pbt66WL18ud3d3SVK9evW0YMECvfnmm3r77bcVHBys0aNHq2/fvg6rD+DuYTFu9x5XAKZ06dIllStXTgkJCerWrVthtwMAduNIDgAbWVlZOnfunD744AOVKFHC+iWBAHCnIeQAsHH06FFFRESofPnySkxMtHn0BADcSThdBQAATIlbyAEAgCkRcgAAgCkRcgAAgCkRcgAAgCkRcgAAgCkRcgAAgCkRcgAAgCkRcgAAgCkRcgAAgCn9HyrtCJxCo7u5AAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "pusch_config.dmrs.config_type = 2\n",
    "PUSCHTransmitter(pusch_config).pilot_pattern.show(stream_ind = 0);\n",
    "print(\"Available DMRS ports:\", pusch_config.dmrs.allowed_dmrs_ports)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0e7b8a25",
   "metadata": {},
   "source": [
    "In the above figure, you can see that the pilot pattern has become sparser in the frequency domain. However, there are still only four available DMRS ports. This is because we now need to mask also the resource elements that are used by the third CDM group. This can be done by setting the parameter `NumCDMGroupsWithoutData` equal to three."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "e98b5c61",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-03-08T23:46:24.344987Z",
     "iopub.status.busy": "2025-03-08T23:46:24.344766Z",
     "iopub.status.idle": "2025-03-08T23:46:24.871388Z",
     "shell.execute_reply": "2025-03-08T23:46:24.870819Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Available antenna ports: [0, 1, 2, 3, 4, 5]\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjkAAAHHCAYAAABdm0mZAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAARhRJREFUeJzt3Xl8TPf+x/H3JJFFNgRZSCJK7WvsSxWxlaC0tNXWVrrEVq222ktUl6AtqrXcKom6VGnt96KaorQosbaW2lqxUyRFRSTn90cf5tdpgkzMJHG8no/HeTzM95zz/XwmvZO871nmWAzDMAQAAGAyLvndAAAAgDMQcgAAgCkRcgAAgCkRcgAAgCkRcgAAgCkRcgAAgCkRcgAAgCkRcgAAgCkRcgAAgCkRcgAAgCkRcnBPslgsOVrWrl2rTz/9VBaLRbNmzcoyz8aNG+Xi4qKXX375tjUvXryo/v37q0SJEvL29lbz5s21bds2Z7w9LVu2TM2aNVPJkiVVuHBhlS1bVt26ddPKlSut25w4cUKjRo3Sjh07nNJDfsvMzNS4ceMUEREhT09PVa9eXZ9//nl+twUgD1l4dhXuRf/5z39sXn/22WdavXq1Zs+ebTPeqlUrlSxZUg888ID27dunffv2KSAgQJKUnp6u2rVrKzU1VXv27JG3t/dN62VmZqpp06bauXOnhg0bpuLFi2vKlClKTk5WUlKSypcv77D39v7772vYsGFq1qyZOnXqpMKFC+vgwYP65ptvVKNGDSUkJEiStm7dqrp16yo+Pl69evVyWP2CYvjw4RozZoz69eununXrasmSJfrvf/+rzz//XI899lh+twcgLxgAjJiYGONWH4eff/7ZKFSokNGrVy/rWFxcnCHJWLp06W3n/+KLLwxJxoIFC6xjZ86cMYoUKWI8/vjjd9b836Snpxt+fn5Gq1atsl1/+vRp67+3bNliSDLi4+NzNPfly5cd0WKeOHbsmFGoUCEjJibGOpaZmWk0bdrUKF26tHH9+vV87A5AXuF0FZADlStX1rBhw5SQkKB169bpyJEjGj16tLp06aLo6Ojb7v/ll18qMDBQXbp0sY6VKFFC3bp105IlS5SWluaQPs+dO6fU1FQ1btw42/UlS5aUJK1du1Z169aVJPXu3dt6eu7GUZ4HH3xQVatWVVJSkh544AEVLlxYr7/+uiQpLS1NsbGxKleunDw8PBQaGqpXXnkly3uIj49XixYtVLJkSXl4eKhy5cqaOnVqlp7KlCmjDh06aO3atapTp468vLxUrVo1rV27VpK0cOFCVatWTZ6enoqMjNT27dtv+3NYsmSJ0tPT9cILL1jHLBaLnn/+eR07dkwbN2687RwA7n6EHCCH/vWvf6ls2bJ69tln9dxzz8nNzU2TJk3K0b7bt29X7dq15eJi+5GrV6+erly5ol9++cUhPZYsWVJeXl5atmyZzp8/f9PtKlWqpNGjR0uS+vfvr9mzZ2v27Nl64IEHrNv8/vvvateunWrWrKmJEyeqefPmyszMVMeOHfX+++8rOjpaH330kTp37qwJEyaoe/fuNjWmTp2q8PBwvf766/rggw8UGhqqF154QZMnT87Sz8GDB/XEE08oOjpacXFxunDhgqKjozVnzhy9+OKLevLJJ/Xmm2/q0KFD6tatmzIzM2/5c9i+fbu8vb1VqVIlm/F69epZ1wO4B+T3oSSgILjd6aobVq1aZUgyJBkTJ07M8fze3t5Gnz59soz/97//NSQZK1eutKvfWxk5cqQhyfD29jbatWtnvPPOO0ZSUlKW7W51uqpZs2aGJGPatGk247NnzzZcXFyM9evX24xPmzbNkGR8//331rErV65kmbdNmzZG2bJlbcbCw8MNScYPP/xgHbvxc/by8jJ+++036/i///1vQ5KxZs2aW/4M2rdvn6WOYfx1yk2S8dprr91yfwDmwJEcwA7FihWzHo1p3bp1jvf7888/5eHhkWXc09PTut5R3nzzTc2dO1e1atXSqlWr9MYbbygyMlK1a9fW3r17czyPh4eHevfubTO2YMECVapUSRUrVtS5c+esS4sWLSRJa9assW7r5eVl/XdKSorOnTunZs2a6fDhw0pJSbGZt3LlymrYsKH1df369SVJLVq0UFhYWJbxw4cP37L3vPx5Ayi43PK7AeBukZGRof79+yskJESXLl3SoEGDtHr16hzt6+Xlle11N1evXrWuv5mUlBSbP8ru7u4qVqzYLes9/vjjevzxx5WamqrNmzcrISFBc+fOVXR0tH766SfrH/tbKVWqlNzd3W3GDhw4oL1796pEiRLZ7nPmzBnrv7///nvFxsZq48aNunLlSpb35O/vb3399yAjybouNDQ02/ELFy7csvc7+XkDMA9CDpBDH374obZv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MGGCXFxc1LVrV6WlpalNmzaaMmVKfrcFAECBkZycbHNpxq2O4tzQp08f6+mhyZMnZ1kfHR2t8PBwTZ8+XSEhIcrMzFTVqlV17do1SX9d23PkyBGtWLFC33zzjbp166aoqCh9+eWX1jlatWqlzz//XKtWrVKPHj2s45cuXdKzzz6rQYMGZakbFhamX375Jedv/jYKVMj5+6EySfL09NTkyZOz/Q8AAACUq+tP27Ztq2vXrslisahNmzY2637//Xft379f06dPV9OmTSX9daFwdnW7d++u7t2765FHHlHbtm11/vx5FStWTJLUsWNHRUdH64knnpCrq6see+wxSX8FpD179qhcuXLZ9laxYkVdv35dSUlJ1tNV+/fvz3KNbk4UqJADAACcz9XVVXv37rX++++KFi2qgIAAffLJJwoODtbRo0f12muv2Wwzfvx4BQcHq1atWnJxcdGCBQsUFBSU5ZTSww8/rNmzZ+upp56Sm5ubHnnkEb366qtq0KCBBgwYoGeeeUbe3t7as2ePVq9erY8//th6CuzZZ5/V1KlT5ebmpiFDhsjLy8vu90nIAQDgHnSzoz8uLi6aN2+eBg0apKpVq6pChQqaNGmSHnzwQes2vr6+GjdunA4cOCBXV1fVrVtX//vf/+TikvWm7UceeUSZmZl66qmn5OLioi5dumjdunV644031LRpUxmGofvuu0/du3e37hMfH69nnnlGzZo1U2BgoN5++22NGDHC7vdoMQzDsHuvu0hqaqr8/f1V/fWlcvX0zu92nGZe99J5Wu+xL47laT0A2eOz71gZVy9r17sdlZKS4rSvILnxdykpKUk+Pj65nufSpUuKjIx0aq93u3x/rAMAAIAzEHIAAIApEXIAAIApEXIAAIApEXIAAIApEXIAAIApEXIAAIApEXIAAIApEXIAAIAp8VgHk5h+dkYeV2xz+00AOB2ffeDmOJIDAABMiZADAABMiZADAABMiZADAABMiZADAABMiZADAABMiZADAABMiZADAABMiZADAABMiZADAABMiZADAABMiZADAABMiZADAABMiZADAABMiZADAABMyS2/G4Bj9CvRN0/rJepYntYDkD0++8DNcSQHAACYEiEHAACYEiEHAACYEiEHAACYEiEHAACYEiEHAACYEiEHAACYEiEHAACYEiEHAACYEiEHAACYEiEHAACYEiEHAACYEiEHAACYEiEHAACYEiEHAACYEiEHAACYEiEHAACYEiEHAACYEiEHAACYEiEHAACYEiEHAACYEiEHAACYEiEHAACYEiEHAACYEiEHAACYEiEHAACYEiEHAACYEiEHAACYEiEHAACYklt+NwDHmH52Rh5XbJPH9QBkh8/+3Svh3Gfy+NMj1/unXU6TJNWtW1eurq6KiYlRTEyMo9ozBUIOAAB3sS1btsjPzy+/2yiQOF0FAABMiZADAABMiZADAABMiZADAABMye6QM2rUKGVmZmYZT0lJ0eOPP+6QpgAAAO6U3SFnxowZatKkiQ4fPmwdW7t2rapVq6ZDhw45tDkAAIDcsjvk7Nq1S6VLl1bNmjU1ffp0DRs2TK1bt9ZTTz2lH374wa65pk6dqurVq8vPz09+fn5q2LChVqxYYV1/9epVxcTEKCAgQD4+PuratatOnz5tb8sAAOAeZPf35BQtWlTz58/X66+/rmeffVZubm5asWKFWrZsaXfx0qVLa8yYMSpfvrwMw9CsWbPUqVMnbd++XVWqVNGLL76o//73v1qwYIH8/f01YMAAdenSRd9//73dtQAAwL0lVxcef/TRR/rwww/1+OOPq2zZsho0aJB27txp9zzR0dF66KGHVL58ed1///1655135OPjo02bNiklJUUzZszQ+PHj1aJFC0VGRio+Pl4//PCDNm3alJu2AQDAPcTukNO2bVu9+eabmjVrlubMmaPt27frgQceUIMGDTRu3LhcN5KRkaF58+bp8uXLatiwoZKSkpSenq6oqCjrNhUrVlRYWJg2btx403nS0tKUmppqswAAgHuP3SEnIyNDu3bt0iOPPCJJ8vLy0tSpU/Xll19qwoQJdjewe/du+fj4yMPDQ88995wWLVqkypUr69SpU3J3d1eRIkVstg8MDNSpU6duOl9cXJz8/f2tS2hoqN09AQCAu5/dIWf16tUKCQnJMt6+fXvt3r3b7gYqVKigHTt2aPPmzXr++efVs2dP7dmzx+55bhg+fLhSUlKsS3Jycq7nAgAAd69cXZOzfv16Pfnkk2rYsKGOHz8uSZo9e7b27dtn91zu7u4qV66cIiMjFRcXpxo1aujDDz9UUFCQrl27posXL9psf/r0aQUFBd10Pg8PD+vdWjcWAABw77E75Hz11Vdq06aNvLy8tH37dqWl/fWo95SU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+fLl8vHxUXp6ujIzM/XEE09o1KhRiomJuek+e/fulZubm+rXr28dCwgIUIUKFbR3796b7teqVSuFh4erbNmyatu2rdq2bauHH35YhQsXtvMd5l6OQs6ECRPUo0cPeXp6asKECTfdzmKxEHIAAMhDfn5+NiHnVpo3b66pU6fK3d1dISEhcnPL9Qmd2/L19dW2bdu0du1aff311xo5cqRGjRqlLVu25NlFzjl6d0eOHMn23wAA4O7h7e2tcuXK2bVPpUqVdP36dW3evNl6uur333/X/v37VblyZUmSu7u7MjIysuzr5uamqKgoRUVFKTY2VkWKFNG3336rLl263PmbyQG77q5KT0/Xfffdd8vDUwAAwDzKly+vTp06qV+/ftqwYYN27typJ598UqVKlVKnTp0kSWXKlNGlS5eUmJioc+fO6cqVK1q+fLkmTZqkHTt26LffftNnn32mzMxMVahQIc96tyvkFCpUSFevXnVWLwAAoACKj49XZGSkOnTooIYNG8owDP3vf/9ToUKFJEmNGjXSc889p+7du6tEiRIaN26cihQpooULF6pFixaqVKmSpk2bps8//1xVqlTJs77tPhkXExOjsWPH6tNPP3XquTwAAOA4t/pG43+uW7t2rc3rokWL3vYB3FOnTtXUqVNvOU9eszulbNmyRYmJifr6669VrVo1eXt726xfuHChw5oDAADILbtDTpEiRXh8AwAAKPDsCjnXr19X8+bN1bp1a5sv/AEAACho7Lrw2M3NTc8995zS0tKc1Q8AAIBD2P2Aznr16mn79u3O6AUAAMBh7L4m54UXXtBLL72kY8eOKTIyMsuFx9WrV3dYcwAAALlld8h57LHHJNk+o8piscgwDFkslmy/8RAAACCv2R1yeKwDAAC4G9gdcsLDw53RBwAAgEPl+iuL9+zZo6NHj+ratWs24x07drzjpgAAAO6U3SHn8OHDevjhh7V7927rtTjSX9flSOKaHAAAUCDYfQv54MGDFRERoTNnzqhw4cL6+eef9d1336lOnTr5/owKAACAG+w+krNx40Z9++23Kl68uFxcXOTi4qImTZooLi5OgwYN4jt0AABAgWD3kZyMjAz5+vpKkooXL64TJ05I+uuC5P379zu2OwAAgFyy+0hO1apVtXPnTkVERKh+/foaN26c3N3d9cknn6hs2bLO6BEAAMBudoecf/3rX7p8+bIkafTo0erQoYOaNm2qgIAAffHFFw5vEAAAIDfsPl3Vpk0bdenSRZJUrlw57du3T+fOndOZM2fUokULu+aKi4tT3bp15evrq5IlS6pz585ZTnldvXpVMTExCggIkI+Pj7p27arTp0/b2zYAALjH2B1yUlJSdP78eZuxYsWK6cKFC0pNTbVrrnXr1ikmJkabNm3S6tWrlZ6ertatW1uPFEnSiy++qGXLlmnBggVat26dTpw4YQ1ZAAAAN5OrZ1dFR0frhRdesBmfP3++li5dqv/97385nmvlypU2rxMSElSyZEklJSXpgQceUEpKimbMmKG5c+dajxLFx8erUqVK2rRpkxo0aGBv+wAA4B5h95GczZs3q3nz5lnGH3zwQW3evPmOmklJSZH015EhSUpKSlJ6erqioqKs21SsWFFhYWHauHFjtnOkpaUpNTXVZgEAAPceu0NOWlqarl+/nmU8PT1df/75Z64byczM1JAhQ9S4cWNVrVpVknTq1Cm5u7urSJEiNtsGBgbq1KlT2c4TFxcnf39/6xIaGprrngAAwN3L7pBTr149ffLJJ1nGp02bpsjIyFw3EhMTo59++knz5s3L9RySNHz4cKWkpFiX5OTkO5oPAADcney+Juftt99WVFSUdu7cqZYtW0qSEhMTtWXLFn399de5amLAgAFavny5vvvuO5UuXdo6HhQUpGvXrunixYs2R3NOnz6toKCgbOfy8PCQh4dHrvoAAADmYfeRnMaNG2vjxo0qXbq05s+fr2XLlqlcuXLatWuXmjZtatdchmFowIABWrRokb799ltFRETYrI+MjFShQoWUmJhoHdu/f7+OHj2qhg0b2ts6AAC4h9h9JEeSatasqblz595x8ZiYGM2dO1dLliyRr6+v9Tobf39/eXl5yd/fX3379tXQoUNVrFgx+fn5aeDAgWrYsCF3Vv3D9LMz8rhimzyuByA7fPaBm8tVyMnIyNCiRYu0d+9eSVLlypXVqVMnubnZN93UqVMl/XVn1t/Fx8erV69ekqQJEybIxcVFXbt2VVpamtq0aaMpU6bkpm0AAHAPsTvk/Pzzz+rYsaNOnTqlChUqSJLGjh2rEiVKaNmyZdY7o3LCMIzbbuPp6anJkydr8uTJ9rYKAADuYXZfk/PMM8+oSpUqOnbsmLZt26Zt27YpOTlZ1atXV//+/Z3RIwAAgN3sPpKzY8cObd26VUWLFrWOFS1aVO+8847q1q3r0OYAAAByy+4jOffff3+2D8g8c+aMypUr55CmAAAA7lSOQs7fH5EQFxenQYMG6csvv9SxY8d07NgxffnllxoyZIjGjh3r7H4BAAByJEenq4oUKSKLxWJ9bRiGunXrZh27cQFxdHS0MjIynNAmAACAfXIUctasWePsPgAAABwqRyGnWbNmzu4DAADAoey+u+q777675foHHngg180AAAA4it0h55/fTizJ5nodrskBAAAFgd23kF+4cMFmOXPmjFauXKm6devm+inkAAAAjmb3kRx/f/8sY61atZK7u7uGDh2qpKQkhzQGAABwJ+w+knMzgYGB2r9/v6OmAwAAuCN2H8nZtWuXzWvDMHTy5EmNGTNGNWvWdFRfsFO/En3ztF6ijuVpPQDZ47MP3JzdIadmzZqyWCxZniDeoEEDzZw502GNAQAA3Am7Q86RI0dsXru4uKhEiRLy9PR0WFMAAAB3yu6QEx4e7ow+AAAAHCrHFx5v3LhRy5cvtxn77LPPFBERoZIlS6p///5KS0tzeIMAAAC5keOQM3r0aP3888/W17t371bfvn0VFRWl1157TcuWLVNcXJxTmgQAALBXjkPOjh071LJlS+vrefPmqX79+po+fbqGDh2qSZMmaf78+U5pEgAAwF45DjkXLlxQYGCg9fW6devUrl076+u6desqOTnZsd0BAADkUo5DTmBgoPXOqmvXrmnbtm1q0KCBdf0ff/yhQoUKOb5DAACAXMhxyHnooYf02muvaf369Ro+fLgKFy6spk2bWtfv2rVL9913n1OaBAAAsFeObyF/66231KVLFzVr1kw+Pj6aNWuW3N3dretnzpyp1q1bO6VJAAAAe+U45BQvXlzfffedUlJS5OPjI1dXV5v1CxYskI+Pj8MbBAAAyA2HPIVckooVK3bHzQAAADiKw55CDgAAUJAQcgAAgCkRcgAAgCnZfU0OAAC4c+vWtZSrp3eu98+4elnSh6pbt65cXV0VExOjmJgYxzVoAoQcAADuYlu2bJGfn19+t1EgcboKAACYEiEHAACYEiEHAACYEiEHAACYEiEHAACYEiEHAACYEiEHAACYEiEHAACYEiEHAACYEiEHAACYEiEHAACYEiEHAACYEiEHAACYEk8hN4npZ2fkccU2eVwPQHb4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",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "pusch_config.dmrs.num_cdm_groups_without_data = 3\n",
    "PUSCHTransmitter(pusch_config).pilot_pattern.show(stream_ind = 0);\n",
    "print(\"Available antenna ports:\", pusch_config.dmrs.allowed_dmrs_ports)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1d723977",
   "metadata": {},
   "source": [
    "The second parameter that controls the number of available DMRS ports is the ``length``, which can be equal to either one or two.\n",
    "Let's see what happens when we change it to two."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "cbc1719f",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-03-08T23:46:24.874437Z",
     "iopub.status.busy": "2025-03-08T23:46:24.874162Z",
     "iopub.status.idle": "2025-03-08T23:46:25.353325Z",
     "shell.execute_reply": "2025-03-08T23:46:25.352841Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Available DMRS ports: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjkAAAHHCAYAAABdm0mZAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAQqlJREFUeJzt3Xd0VHX+//HXJCGFNCBACoQQikDoXZoBCW0hgg1QdCl2g4AoCrgQihpARRYLrCgJsiCg0vS7gIiE4iJCqCodlNBFIDGJhJC5vz88zM/ZUDJhJhMuz8c5c07mc8v7feMOee3n3rnXYhiGIQAAAJPxcHcDAAAArkDIAQAApkTIAQAApkTIAQAApkTIAQAApkTIAQAApkTIAQAApkTIAQAApkTIAQAApkTIAQAApkTIwW3JYrEU6pWamqoPP/xQFotFc+bMKbCfTZs2ycPDQy+++OINa164cEFPPvmkKlSoIH9/f3Xo0EHbtm1zxeHpiy++UGxsrCpWrKjSpUurWrVq6t27t1auXGlb58SJExo3bpx27Njhkh7czWq1asqUKYqOjpavr68aNGigTz75xN1tAShGFp5dhdvRv//9b7v3H3/8sVavXq25c+fajXfq1EkVK1bUXXfdpb1792rv3r0KCQmRJOXl5alJkybKzMzUTz/9JH9//2vWs1qtateunXbu3KkRI0aofPnyev/995Wenq60tDTVrFnTacf25ptvasSIEYqNjVXPnj1VunRpHTx4UF9//bUaNmyolJQUSdLWrVvVvHlzJScna8CAAU6rX1KMGjVKkyZN0hNPPKHmzZtr2bJl+r//+z998skn6tu3r7vbA1AcDABGQkKCcb2Pw48//miUKlXKGDBggG0sKSnJkGQsX778hvtfuHChIcn49NNPbWNnzpwxypQpYzz00EM31/xf5OXlGUFBQUanTp2uuvz06dO2n7ds2WJIMpKTkwu17+zsbGe0WCyOHTtmlCpVykhISLCNWa1Wo127dkblypWNy5cvu7E7AMWF01VAIcTExGjEiBFKSUnRunXrdOTIEU2YMEH33Xef4uPjb7j9Z599ptDQUN133322sQoVKqh3795atmyZcnNzndLn2bNnlZmZqTZt2lx1ecWKFSVJqampat68uSRp4MCBttNzV2Z52rdvr3r16iktLU133XWXSpcurdGjR0uScnNzlZiYqBo1asjHx0eRkZF66aWXChxDcnKy7r77blWsWFE+Pj6KiYnRjBkzCvRUtWpV9ejRQ6mpqWrWrJn8/PxUv359paamSpIWL16s+vXry9fXV02bNtX27dtv+HtYtmyZ8vLy9Oyzz9rGLBaLnnnmGR07dkybNm264T4A3PoIOUAh/eMf/1C1atX01FNP6emnn5aXl5emT59eqG23b9+uJk2ayMPD/iPXokUL5eTkaP/+/U7psWLFivLz89MXX3yhc+fOXXO9OnXqaMKECZKkJ598UnPnztXcuXN111132db57bff1K1bNzVq1EjTpk1Thw4dZLVadc899+jNN99UfHy83nnnHfXq1Utvv/22+vTpY1djxowZioqK0ujRo/XWW28pMjJSzz77rN57770C/Rw8eFAPP/yw4uPjlZSUpPPnzys+Pl7z5s3T888/r0ceeUTjx4/XoUOH1Lt3b1mt1uv+HrZv3y5/f3/VqVPHbrxFixa25QBuA+6eSgJKghudrrpi1apVhiRDkjFt2rRC79/f398YNGhQgfH/+7//MyQZK1eudKjf6xk7dqwhyfD39ze6detmvPbaa0ZaWlqB9a53uio2NtaQZMycOdNufO7cuYaHh4exYcMGu/GZM2cakoxvv/3WNpaTk1Ngv126dDGqVatmNxYVFWVIMv773//axq78nv38/IxffvnFNv6vf/3LkGSsXbv2ur+D7t27F6hjGH+ecpNkjBw58rrbAzAHZnIAB5QrV842G9O5c+dCb/fHH3/Ix8enwLivr69tubOMHz9e8+fPV+PGjbVq1Sq98soratq0qZo0aaI9e/YUej8+Pj4aOHCg3dinn36qOnXqqHbt2jp79qztdffdd0uS1q5da1vXz8/P9nNGRobOnj2r2NhYHT58WBkZGXb7jYmJUatWrWzvW7ZsKUm6++67VaVKlQLjhw8fvm7vxfn7BlByebm7AeBWkZ+fryeffFIRERHKysrSkCFDtHr16kJt6+fnd9Xrbi5evGhbfi0ZGRl2f5S9vb1Vrly569Z76KGH9NBDDykzM1ObN29WSkqK5s+fr/j4eP3www+2P/bXU6lSJXl7e9uNHThwQHv27FGFChWuus2ZM2dsP3/77bdKTEzUpk2blJOTU+CYgoODbe//GmQk2ZZFRkZedfz8+fPX7f1mft8AzIOQAxTSP//5T23f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ZikiIkJWq1X16tXTpUuXJP15bc+RI0e0YsUKff311+rdu7fi4uL02Wef2fbRqVMnffLJJ1q1apX69etnG8/KytJTTz2lIUOGFKhbpUoV7d+/v/AHfwOEHAAAbmFBQUF2IacwunbtqkuXLslisahLly52y3777Tft27dPs2bNUrt27ST9eaHw1er26dNHffr00QMPPKCuXbvq3LlzKleunCTpnnvuUXx8vB5++GF5enqqb9++kv4MSD/99JNq1Khx1d5q166ty5cvKy0tzXa6at++fbpw4YJDxygRcgAAuO14enpqz549tp//qmzZsgoJCdEHH3yg8PBwHT16VCNHjrRbZ+rUqQoPD1fjxo3l4eGhTz/9VGFhYQVOKd17772aO3euHn30UXl5eemBBx7Qyy+/rDvvvFODBw/W448/Ln9/f/30009avXq13n33XdWqVUtdu3bVU089pRkzZsjLy0vDhg2Tn5+fw8dJyAEA4DZ0rdkfDw8PLViwQEOGDFG9evVUq1YtTZ8+Xe3bt7etExgYqClTpujAgQPy9PRU8+bN9Z///EceHgUv9X3ggQdktVr16KOPysPDQ/fdd5/WrVunV155Re3atZNhGKpevbr69Olj2yY5OVmPP/64YmNjFRoaqldffVVjxoxx+BgthmEYDm91C8nMzFRwcLAajF4uT19/d7fjMgv6VHZ3Cy7Vd+Exd7cAFAqfxVtb/sVs7Xr9HmVkZDh8CqiwrvxdSktLU0BAQJH3k5WVpaZNm7q011sd364CAACmRMgBAACmRMgBAACmRMgBAACmRMgBAACmRMgBAACmRMgBAACmRMgBAACmRMgBAACmRMgBAACmRMgBAACmRMgBAACmRMgBAACmRMgBAACmRMgBAACmRMgBAACmRMgBAACmRMgBAACmRMgBAACmRMgBAACmRMgBAACmRMgBAACmRMgBAACmRMgBAACmRMgBAACmRMgBAACmRMgBAACmRMgBAACmRMgBAACmRMgBAACmRMgBAACmRMgBAACmRMgBAACmRMgBAACmRMgBAACmRMgBAACmVKJDTn5+vsaMGaPo6Gj5+fmpevXqmjhxogzDcHdrAACghPNydwPXM3nyZM2YMUNz5sxR3bp1tXXrVg0cOFDBwcEaMmSIu9sDAAAlWIkOOf/973/Vs2dPde/eXZJUtWpVffLJJ/r+++/d3BkAACjpSvTpqtatW2vNmjXav3+/JGnnzp3auHGjunXrds1tcnNzlZmZafcCAAC3nxI9kzNy5EhlZmaqdu3a8vT0VH5+vl577TX169fvmtskJSVp/PjxxdglAAAoiUr0TM6iRYs0b948zZ8/X9u2bdOcOXP05ptvas6cOdfcZtSoUcrIyLC90tPTi7FjAABQUpTomZwRI0Zo5MiR6tu3rySpfv36+uWXX5SUlKT+/ftfdRsfHx/5+PgUZ5sAAKAEKtEzOTk5OfLwsG/R09NTVqvVTR0BAIBbRYmeyYmPj9drr72mKlWqqG7dutq+fbumTp2qQYMGubs1AABQwpXokPPOO+9ozJgxevbZZ3XmzBlFREToqaee0tixY93dGgAAKOFKdMgJDAzUtGnTNG3aNHe3AgAAbjEl+pocAACAoiLkAAAAUyLkAAAAUyLkAAAAUyLkAAAAUyLkAAAAUyLkAAAAUyLkAAAAUyrRNwNE4c369SN3t+BiXdzdAFAofBZRWClnP5bPH0V/oHRudq4kqXnz5vL09FRCQoISEhKc1Z4pEHIAALiFbdmyRUFBQe5uo0TidBUAADAlQg4AADAlQg4AADAlQg4AADAlh0POuHHjZLVaC4xnZGTooYceckpTAAAAN8vhkPPRRx+pbdu2Onz4sG0sNTVV9evX16FDh5zaHAAAQFE5HHJ27dqlypUrq1GjRpo1a5ZGjBihzp0769FHH9V///tfV/QIAADgMIfvk1O2bFktWrRIo0eP1lNPPSUvLy+tWLFCHTt2dEV/AAAARVKkC4/feecd/fOf/9RDDz2katWqaciQIdq5c6ezewMAACgyh0NO165dNX78eM2ZM0fz5s3T9u3bddddd+nOO+/UlClTXNEjAACAwxwOOfn5+dq1a5ceeOABSZKfn59mzJihzz77TG+//bbTGwQAACgKh6/JWb169VXHu3fvrt27d990QwAAAM5QpGtyNmzYoEceeUStWrXS8ePHJUlz587V3r17ndocAABAUTkccj7//HN16dJFfn5+2r59u3Jz/3zUe0ZGhl5//XWnNwgAAFAUDoecV199VTNnztSsWbNUqlQp23ibNm20bds2pzYHAABQVA6HnH379umuu+4qMB4cHKwLFy44oycAAICb5nDICQsL08GDBwuMb9y4UdWqVXNKUwAAADfL4ZDzxBNPaOjQodq8ebMsFotOnDihefPm6cUXX9Qzzzzjih4BAAAc5vBXyEeOHCmr1aqOHTsqJydHd911l3x8fPTiiy/queeec0WPAAAADnM45FgsFr3yyisaMWKEDh48qKysLMXExCggIMAV/QEAABSJwyHnCm9vb8XExDizFwAAAKcpVMi57777Cr3DxYsXF7kZAAAAZynUhcfBwcG2V1BQkNasWaOtW7falqelpWnNmjUKDg52WaMAAACOKNRMTnJysu3nl19+Wb1799bMmTPl6ekp6c+Hdj777LMKCgpyTZcAAAAOcvgr5LNnz9aLL75oCziS5OnpqeHDh2v27NlObQ4AAKCoHA45ly9fvuqDOPfu3Sur1eqUpgAAAG6Ww9+uGjhwoB577DEdOnRILVq0kCRt3rxZkyZN0sCBA53eIAAAQFE4HHLefPNNhYWF6a233tLJkyclSeHh4RoxYoReeOEFpzcIAABQFA6HHA8PD7300kt66aWXlJmZKUlccAwAAEqcIt8MUCLcAACAksvhC49Pnz6tRx99VBEREfLy8pKnp6fdCwAAoCRweCZnwIABOnr0qMaMGaPw8HBZLBZX9AUAAHBTHA45Gzdu1IYNG9SoUSMXtAMAAOAcDp+uioyMlGEYrugFAADAaRwOOdOmTdPIkSP1888/u6AdAAAA53D4dFWfPn2Uk5Oj6tWrq3Tp0ipVqpTd8nPnzjmtOQAAgKJyOORMmzbNBW0AAAA4l8Mhp3///q7oAwAAwKkKHXKu3N34RrhBIAAAKAkKHXLKlClz3XviGIYhi8Wi/Px8pzQGAABwMwodctauXevKPq7p+PHjevnll7VixQrl5OSoRo0aSk5OVrNmzdzSDwAAuDUUOuTExsa6so+rOn/+vNq0aaMOHTpoxYoVqlChgg4cOKCyZcsWey8AAODWclMP6HS1yZMnKzIyUsnJybax6OhoN3YEAABuFQ7fDLA4LV++XM2aNdODDz6oihUrqnHjxpo1a5a72wIAALeAEh1yDh8+rBkzZqhmzZpatWqVnnnmGQ0ZMkRz5sy55ja5ubnKzMy0ewEAgNtPiT5dZbVa1axZM73++uuSpMaNG+uHH37QzJkzr3m/nqSkJI0fP7442wQAACWQQzM5eXl58vLy0g8//OCqfuyEh4crJibGbqxOnTo6evToNbcZNWqUMjIybK/09HRXtwkAAEogh2ZySpUqpSpVqhTbvXDatGmjffv22Y3t379fUVFR19zGx8dHPj4+rm4NAACUcA5fk/PKK69o9OjRxfIgzueff17fffedXn/9dR08eFDz58/XBx98oISEBJfXBgAAtzaHr8l59913dfDgQUVERCgqKkr+/v52y7dt2+a05po3b64lS5Zo1KhRmjBhgqKjozVt2jT169fPaTUAAIA5ORxyevXq5YI2rq1Hjx7q0aNHsdYEAAC3PodDTmJioiv6AAAAcKoi3SfnwoUL+vDDDzVq1CjbtTnbtm3T8ePHndocAABAUTk8k7Nr1y7FxcUpODhYP//8s5544gmVK1dOixcv1tGjR/Xxxx+7ok8AAACHODyTM3z4cA0YMEAHDhyQr6+vbfxvf/ub1q9f79TmAAAAisrhkLNlyxY99dRTBcYrVaqkU6dOOaUpAABQfAYMGGD3xaL27dtr2LBhbuvHWRwOOT4+Pld9HtT+/ftVoUIFpzQFAACca8CAAbJYLLJYLPL29laNGjU0YcIEXb58Wf/85z+VkpJS5H2npKSoTJkyTuvVWRwOOffcc48mTJigvLw8SZLFYtHRo0f18ssv6/7773d6gwAAwDm6du2qkydP6sCBA3rhhRc0btw4vfHGGwoODi6RIeVmORxy3nrrLWVlZalixYr6448/FBsbqxo1aigwMFCvvfaaK3oEAABO4OPjo7CwMEVFRemZZ55RXFycli9fXuB01f86f/68/v73v6ts2bIqXbq0unXrpgMHDkiSUlNTNXDgQGVkZNhmisaNGydJev/991WzZk35+voqNDRUDzzwQDEc5f/n8LergoODtXr1am3cuFG7du1SVlaWmjRpori4OFf0BwAAruN/LyFx5BmOfn5++u2332643pUvHC1fvlxBQUF6+eWX9be//U0//fSTWrdurWnTpmns2LG2500GBARo69atGjJkiObOnavWrVvr3Llz2rBhg+MHeBMcDjlXtG3bVm3btnVmL7gJT1R4zN0tuNQaHXN3C0Ch8FlEcYuMjLR7n5iYaJtJuRbDMLRmzRqtWrVKzz33nH799ddrrnsl3Hz77bdq3bq1JGnevHmKjIzU0qVL9eCDDyo4OFgWi0VhYWG27Y4ePSp/f3/16NFDgYGBioqKUuPGjYt+oEVQqJAzffp0Pfnkk/L19dX06dOvu+6QIUOc0hgAALix9PR0BQUF2d5fbxbnyy+/VEBAgPLy8mS1WvXwww9r3Lhx133w9Z49e+Tl5aWWLVvaxkJCQlSrVi3t2bPnmtt16tRJUVFRqlatmrp27aquXbvq3nvvVenSpR08wqIrVMh5++231a9fP/n6+urtt9++5noWi4WQAwBAMQoKCrILOdfToUMHzZgxQ97e3oqIiJCXV5FP6NxQYGCgtm3bptTUVH311VcaO3asxo0bpy1bthTbRc6FOrojR45c9WcAAHDr8Pf3V40aNRzapk6dOrp8+bI2b95sO13122+/ad++fYqJiZEkeXt7Kz8/v8C2Xl5eiouLU1xcnBITE1WmTBl98803uu+++27+YArBoW9X5eXlqXr16tedngIAAOZRs2ZN9ezZU0888YQ2btyonTt36pFHHlGlSpXUs2dPSVLVqlWVlZWlNWvW6OzZs8rJydGXX36p6dOna8eOHfrll1/08ccfy2q1qlatWsXWu0Mhp1SpUrp48aKregEAACVQcnKymjZtqh49eqhVq1YyDEP/+c9/VKpUKUlS69at9fTTT6tPnz6qUKGCpkyZojJlymjx4sW6++67VadOHc2cOVOffPKJ6tatW2x9O3wyLiEhQZMnT9aHH37o0nN5AADAea53R+P/XZaammr3vmzZsjd8APeMGTM0Y8aM6+6nuDmcUrZs2aI1a9boq6++Uv369eXv72+3fPHixU5rDgAAoKgcDjllypTh8Q0AAKDEcyjkXL58WR06dFDnzp3tbvgDAABQ0jh04bGXl5eefvpp5ebmuqofAAAAp3D4AZ0tWrTQ9u3bXdELAACA0zh8Tc6zzz6rF154QceOHVPTpk0LXHjcoEEDpzUHAABQVA6HnL59+0qyf0aVxWKRYRiyWCxXveMhAABAcXM45PBYBwAAcCtwOORERUW5og8AAACnKvIti3/66ScdPXpUly5dshu/5557bropAACAm+VwyDl8+LDuvfde7d6923YtjvTndTmSuCYHAACUCA5/hXzo0KGKjo7WmTNnVLp0af34449av369mjVr5vZnVAAAAFzh8EzOpk2b9M0336h8+fLy8PCQh4eH2rZtq6SkJA0ZMoR76AAAgBLB4Zmc/Px8BQYGSpLKly+vEydOSPrzguR9+/Y5tzsAAIAicngmp169etq5c6eio6PVsmVLTZkyRd7e3vrggw9UrVo1V/QIAADgMIdDzj/+8Q9lZ2dLkiZMmKAePXqoXbt2CgkJ0cKFC53eIAAAQFE4HHK6dOli+7lGjRrau3evzp07p7Jly9q+YQUAAOBuDl+Tk5GRoXPnztmNlStXTufPn1dmZqbTGgMAALgZDoecvn37asGCBQXGFy1aZHuuFQAAgLs5HHI2b96sDh06FBhv3769Nm/e7JSmAAAAbpbDISc3N1eXL18uMJ6Xl6c//vjDKU0BAADcLIdDTosWLfTBBx8UGJ85c6aaNm3qlKYAAABulsPfrnr11VcVFxennTt3qmPHjpKkNWvWaMuWLfrqq6+c3iAAAEBRODyT06ZNG23atEmVK1fWokWL9MUXX6hGjRratWuX2rVr54oeAQAAHObwTI4kNWrUSPPnz3d2LwAAAE5TpJCTn5+vJUuWaM+ePZKkmJgY9ezZU15eRdodAACA0zmcSn788Ufdc889OnXqlGrVqiVJmjx5sipUqKAvvvhC9erVc3qTAAAAjnL4mpzHH39cdevW1bFjx7Rt2zZt27ZN6enpatCggZ588klX9AgAAOAwh2dyduzYoa1bt6ps2bK2sbJly+q1115T8+bNndocAABAUTk8k3PHHXfo9OnTBcbPnDmjGjVqOKUpAACAm1WokJOZmWl7JSUlaciQIfrss8907NgxHTt2TJ999pmGDRumyZMnu7pfAACAQinU6aoyZcrIYrHY3huGod69e9vGDMOQJMXHxys/P98FbQIAADimUCFn7dq1ru4DAADAqQoVcmJjY13dBwAAgFM5/O2q9evXX3f5XXfdVeRmAAAAnMXhkNO+ffsCY3+9XseV1+RMmjRJo0aN0tChQzVt2jSX1QEAALc+h79Cfv78ebvXmTNntHLlSjVv3tylTyHfsmWL/vWvf6lBgwYuqwEAAMzD4Zmc4ODgAmOdOnWSt7e3hg8frrS0NKc09ldZWVnq16+fZs2apVdffdXp+wcAAObj8EzOtYSGhmrfvn3O2p2dhIQEde/eXXFxcTdcNzc31+6+PpmZmS7pCQAAlGwOz+Ts2rXL7r1hGDp58qQmTZqkRo0aOasvmwULFmjbtm3asmVLodZPSkrS+PHjnd4HAAC4tTgccho1aiSLxWK7AeAVd955p2bPnu20xiQpPT1dQ4cO1erVq+Xr61uobUaNGqXhw4fb3mdmZioyMtKpfQEAgJLP4ZBz5MgRu/ceHh6qUKFCoUOII9LS0nTmzBk1adLENpafn6/169fr3XffVW5urjw9Pe228fHxkY+Pj9N7AQAAtxaHQ05UVJQr+riqjh07avfu3XZjAwcOVO3atfXyyy8XCDgAAABXFPrC402bNunLL7+0G/v4448VHR2tihUr6sknn1Rubq5TmwsMDFS9evXsXv7+/goJCVG9evWcWgsAAJhLoUPOhAkT9OOPP9re7969W4899pji4uI0cuRIffHFF0pKSnJJkwAAAI4q9OmqHTt2aOLEibb3CxYsUMuWLTVr1ixJUmRkpBITEzVu3DinN/lXqampLt0/AAAwh0LP5Jw/f16hoaG29+vWrVO3bt1s75s3b6709HTndgcAAFBEhQ45oaGhtm9WXbp0Sdu2bdOdd95pW/7777+rVKlSzu8QAACgCAodcv72t79p5MiR2rBhg0aNGqXSpUurXbt2tuW7du1S9erVXdIkAACAowp9Tc7EiRN13333KTY2VgEBAZozZ468vb1ty2fPnq3OnTu7pEkAAABHFTrklC9fXuvXr1dGRoYCAgIK3KPm008/VUBAgNMbBAAAKAqnPIVcksqVK3fTzQAAADiL055CDgAAUJIQcgAAgCkRcgAAgCk5fE0OAAC4eevWdZSnr3+Rt8+/mC3pn2revLk8PT2VkJCghIQE5zVoAoQcAABuYVu2bFFQUJC72yiROF0FAABMiZADAABMiZADAABMiZADAABMiZADAABMiZADAABMiZADAABMiZADAABMiZADAABMiZADAABMiZADAABMiZADAABMiZADAABMiZADAABMiZADAABMiZADAABMiZADAABMiZADAABMiZADAABMiZADAABMiZADAABMiZADAABMiZADAABMiZADAABMiZADAABMiZADAABMiZADAABMiZADAABMiZADAABMiZADAABMiZADAABMiZADAABMiZADAABMiZADAABMiZADAABMiZADAABMiZADAABMiZADAABMiZADAABMqUSHnKSkJDVv3lyBgYGqWLGievXqpX379rm7LQAAcAso0SFn3bp1SkhI0HfffafVq1crLy9PnTt3VnZ2trtbAwAAJZyXuxu4npUrV9q9T0lJUcWKFZWWlqa77rrLTV0BAIBbQYmeyflfGRkZkqRy5cq5uRMAAFDSleiZnL+yWq0a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wYMHXVYjPDy8QECsU6eOy0+T/fLLL/r666/1+OOPu7TOiBEjNHLkSPXt21f169fXo48+queff15JSUkurVu9enWtW7dOWVlZSk9P1/fff6+8vDxVq1bNpXWv/Nti9n93gOJGyPkf3t7eatq0qdasWWMbs1qtWrNmjcuvISkOhmFo8ODBWrJkib755htFR0e7pQ+r1arc3FyX7Ltjx47avXu3duzYYXs1a9ZM/fr1044dO+Tp6emSuldkZWXp0KFDCg8Pd1mNNm3aFPjq//79+xUVFeWympKUnJysihUrqnv37i6tk5OTIw8P+3+ePD09ZbVaXVr3Cn9/f4WHh+v8+fNatWqVevbs6dJ60dHRCgsLs/t3JzMzU5s3bzbFvzuAu3C66iqGDx+u/v37q1mzZmrRooWmTZum7OxsDRw40CX1srKy7P5f/5EjR7Rjxw6VK1dOVapUcWqthIQEzZ8/X8uWLVNgYKDtfH9wcLD8/PycWuuKUaNGqVu3bqpSpYp+//13zZ8/X6mpqVq1apVL6gUGBha4xsjf318hISEuufboxRdfVHx8vKKionTixAklJibK09NTDz30kNNrXfH888+rdevWev3119W7d299//33+uCDD/TBBx+4rKbValVycrL69+8vLy/X/tMRHx+v1157TVWqVFHdunW1fft2TZ06VYMGDXJp3VWrVskwDNWqVUsHDx7UiBEjVLt2bad89m/0OR82bJheffVV1axZU9HR0RozZowiIiLUq1cvl9U8d+6cjh49qhMnTkiSLTiHhYUxgwRzcPfXu0qqd955x6hSpYrh7e1ttGjRwvjuu+9cVmvt2rWGpAKv/v37O73W1epIMpKTk51e64pBgwYZUVFRhre3t1GhQgWjY8eOxldffeWyelfjyq+Q9+nTxwgPDze8vb2NSpUqGX369DEOHjzoklp/9cUXXxj16tUzfHx8jNq1axsffPCBS+utWrXKkGTs27fPpXUMwzAyMzONoUOHGlWqVDF8fX2NatWqGa+88oqRm5vr0roLFy40qlWrZnh7exthYWFGQkKCceHCBafs+0afc6vVaowZM8YIDQ01fHx8jI4dO9707/pGNZOTk6+6PDEx8eYOFighLIbh4luIAgAAuAHX5AAAAFMi5AAAAFMi5AAAAFMi5AAAAFMi5AAAAFMi5AAAAFMi5AAAAFMi5AAoFqmpqbJYLLpw4cJN7adq1aqaNm2aU3oCYG6EHOAmpKena9CgQYqIiJC3t7eioqI0dOhQ/fbbb3brtW/fXhaLpcDr8uXLBZb7+PioUqVKio+P1+LFiwvUvLLed999Zzeem5urkJAQWSwWpaamXrPnX3/9Vc8884yqVKkiHx8fhYWFqUuXLvr2229v/hcCACUIIQcoosOHD6tZs2Y6cOCAPvnkEx08eFAzZ860Pcz13Llzdus/8cQTOnnypN3rr8+AurL80KFD+vzzzxUTE6O+ffvqySefLFA7MjJSycnJdmNLlixRQEDADfu+//77tX37ds2ZM0f79+/X8uXL1b59+wLBDABudYQcoIgSEhLk7e2tr776SrGxsapSpYq6deumr7/+WsePH9crr7xit37p0qVtDz682gMQryyvXLmy7rzzTk2ePFn/+te/NGvWLH399dd26/bv318LFizQH3/8YRubPXu2+vfvf92eL1y4oA0bNmjy5Mnq0KGDoqKi1KJFC40aNUr33HOPJGnQoEHq0aOH3XZ5eXmqWLGiPvroI0l/zjw999xzGjZsmMqWLavQ0FDNmjXL9iDbwMBA1ahRQytWrCjQw7fffqsGDRrI19dXd955p3744Qe75Z9//rnq1q0rHx8fVa1aVW+99dZ1jwkAroWQAxTBuXPntGrVKj377LMFnt4eFhamfv36aeHChbrZR8P1799fZcuWLXDaqmnTpqpatao+//xzSdLRo0e1fv16Pfroo9fdX0BAgAICArR06VLl5uZedZ3HH39cK1eu1MmTJ21jX375pXJyctSnTx/b2Jw5c1S+fHl9//33eu655/TMM8/owQcfVOvWrbVt2zZ17txZjz76qHJycuz2P2LECL311lvasmWLKlSooPj4eOXl5UmS0tLS1Lt3b/Xt21e7d+/WuHHjNGbMGKWkpBT6dwYAVxBygCI4cOCADMNQnTp1rrq8Tp06On/+vH799Vfb2Pvvv28LGQEBAXrhhRduWMfDw0N33HGHfv755wLLBg0apNmzZ0uSUlJS9Le//U0VKlS47v68vLyUkpKiOXPmqEyZMmrTpo1Gjx6tXbt22dZp3bq1atWqpblz59rGkpOT9eCDD9qdDmvYsKH+8Y9/qGbNmho1apR8fX1Vvnx5PfHEE6pZs6bGjh2r3377zW7fkpSYmKhOnTqpfv36mjNnjk6fPq0lS5ZIkqZOnaqOHTtqzJgxuuOOOzRgwAANHjxYb7zxxg1/VwDwvwg5wE1wZKamX79+2rFjh+01atSoQtewWCwFxh955BFt2rRJhw8fVkpKigYNGlSo/d1///06ceKEli9frq5duyo1NVVNmjSxmy15/PHHbdf8nD59WitWrCiw/wYNGth+9vT0VEhIiOrXr28bCw0NlSSdOXPGbrtWrVrZfi5Xrpxq1aqlPXv2SJL27NmjNm3a2K3fpk0bHThwQPn5+YU6PgC4gpADFEGNGjVksVhsf5z/1549e1S2bFm7mZXg4GDVqFHD9ipfvvwN6+Tn5+vAgQOKjo4usCwkJEQ9evTQY489posXL6pbt26F7t/X11edOnXSmDFj9N///lcDBgxQYmKibfnf//53HT58WJs2bdK///1vRUdHq127dnb7KFWqlN17i8ViN3YlmFmt1kL3BQDORMgBiiAkJESdOnXS+++/b3fxrySdOnVK8+bNU58+fa46A+OIOXPm6Pz587r//vuvunzQoEFKTU3V3//+d3l6eha5TkxMjLKzs23vQ0JC1KtXLyUnJyslJUUDBw4s8r7/11+/+n7+/Hnt37/fdtqvTp06Bb7K/u233+qOO+64qeMDcHvyuvEqAK7m3XffVevWrdWlSxe9+uqrio6O1o8//qgRI0aoUqVKeu211xzaX05Ojk6dOqXLly/r2LFjWrJkid5++20988wz6tChw1W36dq1q3799VcFBQUVqsZvv/2mBx98UIMGDVKDBg0UGBiorVu3asqUKerZs6fduo8//rh69Oih/Pz8G35ryxETJkxQSEiIQkND9corr6h8+fLq1auXJOmFF15Q8+bNNXHiRPXp00ebNm3Su+++q/fff99p9QHcPgg5QBHVrFlTW7duVWJionr37q1z584pLCxMvXr1UmJiosqVK+fQ/mbNmqVZs2bJ29tbISEhatq0qRYuXKh77733mttYLJZCnfa6IiAgQC1bttTbb7+tQ4cOKS8vT5GRkXriiSc0evRou3Xj4uIUHh6uunXrKiIiwqFjuZ5JkyZp6NChOnDggBo1aqQvvvhC3t7ekqQmTZpo0aJFGjt2rCZOnKjw8HBNmDBBAwYMcFp9ALcPi3Gz33EFYEpZWVmqVKmSkpOTdd9997m7HQBwGDM5AOxYrVadPXtWb731lsqUKWO7SSAA3GoIOQDsHD16VNHR0apcubJSUlLsHj0BALcSTlcBAABT4ivkAADAlAg5AADAlAg5AADAlAg5AADAlAg5AADAlAg5AADAlAg5AADAlAg5AADAlAg5AADAlP4fysHlE7zDd04AAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "pusch_config.n_size_bwp = 1 # We reduce the bandwidth to one PRB for better visualization\n",
    "pusch_config.dmrs.length = 2\n",
    "PUSCHTransmitter(pusch_config).pilot_pattern.show(stream_ind = 0);\n",
    "print(\"Available DMRS ports:\", pusch_config.dmrs.allowed_dmrs_ports)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9fe17ece",
   "metadata": {},
   "source": [
    "The pilot pattern is now composed of four 2x2 blocks within a PRB. These blocks are used by the four DMRS ports within the same CDM group. This means that we can now support up to twelve layers! \n",
    "\n",
    "Let's create a setup with three transmitters, each sending four layers using four antenna ports. We choose the DMRS ports for each transmitters such that they belong to the CDM group. This is not necessary and you are free to choose any desired allocation. \n",
    "It is however important to understand, that for channel estimation to work, the channel is supposed to be static over 2x2 blocks of resource elements. This is in general the case for low mobility scenarios and channels with not too large delay spread. You can see from the results below that the pilot sequences of the DMRS ports in the same CDM group are indeed orthogonal over the 2x2 blocks."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "d936f636",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-03-08T23:46:25.356267Z",
     "iopub.status.busy": "2025-03-08T23:46:25.355965Z",
     "iopub.status.idle": "2025-03-08T23:46:25.925791Z",
     "shell.execute_reply": "2025-03-08T23:46:25.924422Z"
    }
   },
   "outputs": [],
   "source": [
    "pusch_config = PUSCHConfig()\n",
    "pusch_config.n_size_bwp = 1\n",
    "pusch_config.dmrs.config_type = 2\n",
    "pusch_config.dmrs.length = 2\n",
    "pusch_config.dmrs.additional_position = 1\n",
    "pusch_config.dmrs.num_cdm_groups_without_data = 3\n",
    "pusch_config.num_antenna_ports = 4\n",
    "pusch_config.num_layers = 4\n",
    "pusch_config.dmrs.dmrs_port_set = [0,1,6,7]\n",
    "pusch_config.precoding = \"codebook\"\n",
    "pusch_config.tpmi = 4\n",
    "\n",
    "pusch_config_1 = pusch_config.clone()\n",
    "pusch_config_1.dmrs.dmrs_port_set = [2,3,8,9]\n",
    "pusch_config_2 = pusch_config.clone()\n",
    "pusch_config_2.dmrs.dmrs_port_set = [4,5,10,11]\n",
    "\n",
    "pusch_transmitter_multi = PUSCHTransmitter([pusch_config, pusch_config_1, pusch_config_2])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "c1ef3b92",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-03-08T23:46:25.928472Z",
     "iopub.status.busy": "2025-03-08T23:46:25.928278Z",
     "iopub.status.idle": "2025-03-08T23:46:25.934653Z",
     "shell.execute_reply": "2025-03-08T23:46:25.934004Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "matrix([[ True, False, False, False],\n",
       "        [False,  True, False, False],\n",
       "        [False, False,  True, False],\n",
       "        [False, False, False,  True]])"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Extract the first 2x2 block of pilot symbols for all DMRS ports of the first transmitter\n",
    "p = pusch_transmitter_multi.pilot_pattern.pilots[0].numpy()\n",
    "p = np.matrix(p[:, [0,1,12,13]])\n",
    "\n",
    "# Test that these pilot sequences are mutually orthogonal\n",
    "# The result should be a boolean identity matrix\n",
    "np.abs(p*p.getH())>1e-6"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c31350c2",
   "metadata": {},
   "source": [
    "There are several other parameters that impact the pilot patterns. The full DMRS configuration can be displayed with the following command.\n",
    "We refer to the [API documentation of the PUSCHDMRSConfig class](https://nvlabs.github.io/sionna/phy/api/nr.html#puschdmrsconfig) for further details."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "372e465c",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-03-08T23:46:25.937565Z",
     "iopub.status.busy": "2025-03-08T23:46:25.937307Z",
     "iopub.status.idle": "2025-03-08T23:46:25.941776Z",
     "shell.execute_reply": "2025-03-08T23:46:25.940929Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "PUSCH DMRS Configuration\n",
      "========================\n",
      "additional_position : 1\n",
      "allowed_dmrs_ports : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]\n",
      "beta : 1.7320508075688772\n",
      "cdm_groups : [0, 0, 0, 0]\n",
      "config_type : 2\n",
      "deltas : [0, 0, 0, 0]\n",
      "dmrs_port_set : [0, 1, 6, 7]\n",
      "length : 2\n",
      "n_id : None\n",
      "n_scid : 0\n",
      "num_cdm_groups_without_data : 3\n",
      "type_a_position : 2\n",
      "w_f : [[ 1  1  1  1]\n",
      " [ 1 -1  1 -1]]\n",
      "w_t : [[ 1  1  1  1]\n",
      " [ 1  1 -1 -1]]\n",
      "\r\n"
     ]
    }
   ],
   "source": [
    "pusch_config.dmrs.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ddc22dc4",
   "metadata": {},
   "source": [
    "## Transport Blocks and MCS\n",
    "\n",
    "The modulation and coding scheme (MCS) is set in 5G NR via the MCS index and MCS table which are properties of transport block configuration [TBConfig](https://nvlabs.github.io/sionna/phy/api/nr.html#sionna.nr.TBConfig). When you create an instance of ``PUSCHConfig``, a default instance of ``TBConfig`` is created. It can be accessed via the following command:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "8c08f4e0",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-03-08T23:46:25.944037Z",
     "iopub.status.busy": "2025-03-08T23:46:25.943811Z",
     "iopub.status.idle": "2025-03-08T23:46:25.965200Z",
     "shell.execute_reply": "2025-03-08T23:46:25.964559Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Transport Block Configuration\n",
      "=============================\n",
      "channel_type : PUSCH\n",
      "mcs_index : 14\n",
      "mcs_table : 1\n",
      "n_id : None\n",
      "num_bits_per_symbol : 4\n",
      "target_coderate : 0.5400390625\n",
      "tb_scaling : 1.0\n",
      "\r\n"
     ]
    }
   ],
   "source": [
    "pusch_config = PUSCHConfig()\n",
    "pusch_config.tb.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c0d2301c",
   "metadata": {},
   "source": [
    "You can see that the current MCS Table is 1 and the MCS index is 14. Looking at the corresponding table in the API documentation of [TBConfig](https://nvlabs.github.io/sionna/phy/api/nr.html#sionna.nr.TBConfig), you can see that we should have  a 16QAM modulation (i.e., 4 bits per symbol) and a target coderate of 553/1024=0.54 which matches the values above. The data scrambling ID $n_\\text{ID}$ is set to `None` which implies that the physical layer cell id $N^\\text{cell}_\\text{ID}$ will be used instead.\n",
    "\n",
    "We can change the MCS index and table as follows:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "2d06067d",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-03-08T23:46:25.968138Z",
     "iopub.status.busy": "2025-03-08T23:46:25.967870Z",
     "iopub.status.idle": "2025-03-08T23:46:25.989675Z",
     "shell.execute_reply": "2025-03-08T23:46:25.988868Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Transport Block Configuration\n",
      "=============================\n",
      "channel_type : PUSCH\n",
      "mcs_index : 26\n",
      "mcs_table : 2\n",
      "n_id : None\n",
      "num_bits_per_symbol : 8\n",
      "target_coderate : 0.89501953125\n",
      "tb_scaling : 1.0\n",
      "\r\n"
     ]
    }
   ],
   "source": [
    "pusch_config.tb.mcs_index = 26\n",
    "pusch_config.tb.mcs_table = 2\n",
    "pusch_config.tb.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ac404602",
   "metadata": {},
   "source": [
    "The transport block segmentation allows the PUSCH transmitter to fill resource grids of almost arbitrary size and with any of the possible DMRS configurations.\n",
    "The number of information bits transmitted in a single slot is given by the property ``tb_size`` of the ``PUSCHConfig``.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "1eb1b886",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-03-08T23:46:25.993067Z",
     "iopub.status.busy": "2025-03-08T23:46:25.992820Z",
     "iopub.status.idle": "2025-03-08T23:46:26.058773Z",
     "shell.execute_reply": "2025-03-08T23:46:26.058128Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "303240"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Adding more PRBs will increase the TB size\n",
    "pusch_config.carrier.n_size_grid = 273\n",
    "pusch_config.tb_size"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "a0b5e407",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-03-08T23:46:26.061694Z",
     "iopub.status.busy": "2025-03-08T23:46:26.061391Z",
     "iopub.status.idle": "2025-03-08T23:46:26.135342Z",
     "shell.execute_reply": "2025-03-08T23:46:26.134733Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1213032"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Adding more layers will increase the TB size\n",
    "pusch_config.num_antenna_ports = 4\n",
    "pusch_config.num_layers = 4\n",
    "pusch_config.tb_size"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "77a07cff",
   "metadata": {},
   "source": [
    "For more details about how the transportblock encoding/decoding works, we refer to the API documentation of the [TBEncoder](https://nvlabs.github.io/sionna/phy/api/nr.html#sionna.nr.TBEncoder)."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c8f838a3",
   "metadata": {},
   "source": [
    "## Looking into the PUSCHTransmitter\n",
    "\n",
    "We have used the ``PUSCHTransmitter`` class already multiple times without speaking about what it actually does. In short, it generates for every configured transmitter a batch of random information bits of length ``pusch_config.tb_size`` and outputs either a frequency to time-domain representation of the transmitted OFDM waveform from each of the antenna ports of each transmitter.\n",
    "\n",
    "However, under the hood it implements the sequence of layers shown in the following figure: "
   ]
  },
  {
   "attachments": {
    "45dafb96-b379-4430-82c8-9df578084676.jpg": {
     "image/jpeg": "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"
    }
   },
   "cell_type": "markdown",
   "id": "0ddd20f7",
   "metadata": {},
   "source": [
    "![Picture 1.jpg](attachment:45dafb96-b379-4430-82c8-9df578084676.jpg)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bd633a17",
   "metadata": {},
   "source": [
    "Information bits are either randomly generated or provided as input and then encoded into a transport block by the [TBEncoder](https://nvlabs.github.io/sionna/phy/api/nr.html#sionna.nr.TBEncoder). The encoded bits are then mapped to QAM constellation symbols by the [Mapper](https://nvlabs.github.io/sionna/phy/api/mapping.html#sionna.mapping.Mapper). The [LayerMapper](https://nvlabs.github.io/sionna/phy/api/nr.html#sionna.nr.LayerMapper) splits the modulated symbols into different layers which are then mapped onto OFDM resource grids by the [ResourceGridMapper](https://nvlabs.github.io/sionna/phy/api/ofdm.html#sionna.ofdm.ResourceGridMapper). If precoding is enabled in the [PUSCHConfig](https://nvlabs.github.io/sionna/phy/api/nr.html#sionna.nr.PUSCHConfig), the resource grids are further precoded by the [PUSCHPrecoder](https://nvlabs.github.io/sionna/phy/api/nr.html#sionna.nr.PUSCHPrecoder) so that there is one for each transmitter and antenna port. If ``output_domain`` equals “freq”, these are the ouputs \n",
    "x\n",
    ". If ``output_domain`` is chosen to be “time”, the resource grids are transformed into time-domain signals by the [OFDMModulator](https://nvlabs.github.io/sionna/phy/api/ofdm.html#sionna.ofdm.OFDMModulator)."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ac65ef08",
   "metadata": {},
   "source": [
    "Let us configure a ``PUSCHTransmitter`` from a list of two ``PUSCHConfig`` and inspect the output shapes: "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "15ee99f9",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-03-08T23:46:26.139457Z",
     "iopub.status.busy": "2025-03-08T23:46:26.139160Z",
     "iopub.status.idle": "2025-03-08T23:46:26.581371Z",
     "shell.execute_reply": "2025-03-08T23:46:26.579995Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Shape of b: (32, 2, 2728)\n",
      "Shape of x: (32, 2, 4, 14, 48)\n"
     ]
    }
   ],
   "source": [
    "pusch_config = PUSCHConfig()\n",
    "pusch_config.num_antenna_ports = 4\n",
    "pusch_config.num_layers = 2\n",
    "pusch_config.dmrs.dmrs_port_set = [0,1]\n",
    "pusch_config.precoding = \"codebook\"\n",
    "pusch_config.tpmi = 7\n",
    "\n",
    "pusch_config_1 = pusch_config.clone()\n",
    "pusch_config.dmrs.dmrs_port_set = [2,3]\n",
    "\n",
    "pusch_transmitter = PUSCHTransmitter([pusch_config, pusch_config_1])\n",
    "\n",
    "batch_size = 32\n",
    "x, b = pusch_transmitter(batch_size)\n",
    "\n",
    "# b has shape [batch_size, num_tx, tb_size]\n",
    "print(\"Shape of b:\", b.shape)\n",
    "\n",
    "# x has shape [batch_size, num_tx, num_tx_ant, num_ofdm_symbols, num_subcarriers]\n",
    "print(\"Shape of x:\", x.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5f492ecd",
   "metadata": {},
   "source": [
    "If you want to transmit a custom payload, you simply need to deactive the ``return_bits`` flag when creating the transmitter:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "3d6e5ba3",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-03-08T23:46:26.586311Z",
     "iopub.status.busy": "2025-03-08T23:46:26.585799Z",
     "iopub.status.idle": "2025-03-08T23:46:27.054157Z",
     "shell.execute_reply": "2025-03-08T23:46:27.053338Z"
    }
   },
   "outputs": [],
   "source": [
    "pusch_transmitter = PUSCHTransmitter([pusch_config, pusch_config_1], return_bits=False)\n",
    "x_2 = pusch_transmitter(b)\n",
    "assert np.array_equal(x, x_2) # Check that we get the same output for the payload b generated above"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "69052c60",
   "metadata": {},
   "source": [
    "By default, the ``PUSCHTransmitter`` generates frequency-domain outputs. If you want to make time-domain simulations, you need to configure the ``output_domain`` during the initialization:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "601b1e56",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-03-08T23:46:27.058190Z",
     "iopub.status.busy": "2025-03-08T23:46:27.057887Z",
     "iopub.status.idle": "2025-03-08T23:46:27.586579Z",
     "shell.execute_reply": "2025-03-08T23:46:27.585599Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Shape of x: (32, 2, 4, 728)\n"
     ]
    }
   ],
   "source": [
    "pusch_transmitter = PUSCHTransmitter([pusch_config, pusch_config_1], output_domain=\"time\", return_bits=False)\n",
    "x_time = pusch_transmitter(b)\n",
    "\n",
    "# x has shape [batch_size, num_tx, num_tx_ant, num_time_samples]\n",
    "print(\"Shape of x:\", x_time.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "07f11907",
   "metadata": {},
   "source": [
    "The last dimension of the output signal correspond to the total number of time-domain samples which can be computed in the following way:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "2f4c25f4",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-03-08T23:46:27.590663Z",
     "iopub.status.busy": "2025-03-08T23:46:27.590323Z",
     "iopub.status.idle": "2025-03-08T23:46:27.595385Z",
     "shell.execute_reply": "2025-03-08T23:46:27.594625Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "728"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "(pusch_transmitter.resource_grid.cyclic_prefix_length  \\\n",
    " + pusch_transmitter.resource_grid.fft_size) \\\n",
    "* pusch_transmitter.resource_grid.num_ofdm_symbols"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1f050ea6",
   "metadata": {},
   "source": [
    "## Components of the PUSCHReceiver\n",
    "\n",
    "The [PUSCHReceiver](https://nvlabs.github.io/sionna/phy/api/nr.html#sionna.nr.PUSCHReceiver) is the counter-part to the [PUSCHTransmitter](https://nvlabs.github.io/sionna/phy/api/nr.html#sionna.nr.PUSCHTransmitter) as it *simply* recovers the transmitted information bits from received waveform. It combines multiple processing blocks in a single layer as shown in the following figure:"
   ]
  },
  {
   "attachments": {
    "f7ad545c-20f0-47d6-8f02-6473dce4f964.jpg": {
     "image/jpeg": "/9j/4AAQSkZJRgABAQABSgFKAAD/4QCMRXhpZgAATU0AKgAAAAgABQESAAMAAAABAAEAAAEaAAUAAAABAAAASgEbAAUAAAABAAAAUgEoAAMAAAABAAIAAIdpAAQAAAABAAAAWgAAAAAAAAFKAAAAAQAAAUoAAAABAAOgAQADAAAAAQABAACgAgAEAAAAAQAAATSgAwAEAAAAAQAAAfYAAAAA/8AAEQgB9gE0AwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/bAEMAAgICAgICAwICAwUDAwMFBgUFBQUGCAYGBgYGCAoICAgICAgKCgoKCgoKCgwMDAwMDA4ODg4ODw8PDw8PDw8PD//bAEMBAgICBAQEBwQEBxALCQsQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEP/dAAQAFP/aAAwDAQACEQMRAD8A/fyiiigAooooAKKKKACiiigAooooAKKKKACiiigAoqF7iCKSOKSRVeXIRSQC2OuB1OPahLmCSRoUkVnT7yhgSPqO1AE1FUNT1Cx0nT7nVdSnS1tLOJ5pppG2pHHGCzuxPACqCSa8e+HfxQ8QfEbwpf8Aj+y8P/2P4durY3OhvqMxhur6EBytxPAEP2aCVQjxBmMuxsuiN8tAHuFFfKH7I/7SN5+058LIfihe+Hl8L219eTW1lbvc+dJMlsAJJOVTgPkDAOQMnngd9N8Wb3w98VLb4b+OtHXS7fxHJIvhzVIp/OttQeGISyWk4Ko1veACR0j+ZJI0LK+4OigHuNFIOlRfaIPO+zeYvm43bMjdt6Zx1x70ATUVDBcW90nm20iypkjcjBhkdRkVNQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAH//0P38ooooAKKKKACiiigAooooAKKKKACiiigAprckfjTqawyKAPy4/wCCjfw9Xw94Y8P/ALRPhvUr7TPEXhvxLoJuLlbyfy108zm3MMcW/wAuNGecPLtUGQgB9wCgez/s/QaN4l8efED9q26u0sPDfjE2VloTzSG3gl0+1jVXvnWUhQ91cMyI38UUcRABJzc+Kngj4zftCa7rHwZ8b+FtP0H4SjUbaa51U3iXV9rFhbCKdbWG0CEW5kuFIkmdsrGMIgdg6+1/FT4P2fxH8AWnwxtbhNG8P/aLH7VFDCrM1jZSLJ9mh3fLH5mxULYJVCduGwwAPNP2452X9lb4gRC6Nlb3ljHbXNwrY8q1uZ44p3z0GI2bk8Y61Z/a58dW/wAIf2S/iB4n064TT5LHQZbSxcYwlxdILW2CDp991wPyr3bx34D0D4ieBNb+HfiODzdI12xmsJ0HXypk2HGc8r1BPcV4t4e+GWq/ED4cyfBX9pXw5B4ostGW0jGptJG1nri25PkzyQIySw3C7FaaNk8sOwMbsOFAPyY034UR/D2L9jv4ZaZcX0fi7xDeN4gv9QFzKi22n20Yna0UBlEdufMXK4+bafMJJ5/UH9sm6jPwm8Oa/pV0v2m28YeE57KaJsljLq9vHhHXtJG7KexUkHjNesePv2d/gt8UDoTeP/CNnrX/AAjUTW9gswbbFA4VWhZQQHiYIu6N9ynAyDXHeKPAXiz4pfEXRdL13SItB+G/gG+g1G3jd4ZZtb1C1QNassMe9beztHIdd5WZ5kGESNAZQLH0Wmq6dNqE2kRXcLahbokstusimaNJMhWZAdwViDgkYODivyJ8UeCNP8Uf8FGJfBmh6lqFloHh3wtc6t4naO/uGuNQk1CWWQ2k0jOSsGxowiptKJ8ibV4r9H/CHwmbQfi/44+MWraiL3UvFkGnadbwRReVFZ6dpiyGNGJZmlmeWaV3kyq7diKg2sz9BpHwh+G2g+NvEHxH0nw/bW/ibxVEkOqX6hjNdxxqqqkhJIKhVUYHpQB+Zv7CPxK0T4bfs1/Fj4+a9fzS+ErvXdc1zStPDs00Ol2bmMRQRSMSF3AKAMKCeeev3H8Mfj3qHir4hz/CrxzoEXhzxI+i2/iG0SC8F5BcWE7+W4DmONhLAxQSjbt+ddrHPHEePP2MPhYvwS+IXw2+DXh6x8J6n4z0uayFyqs2CdzRRMzFmWBXYkRqQq5JAFL8J/hL4+uvjv8A8Lv8f6PH4d/srwla+GbK0W6S6lllMqy3szNDmMRZhhEOSHPzlkXgUAfaFFIOgzS0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAH/0f38ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACkNLTT6UmBSv7pbGznvGUssCM5A6kKM4FeO/Cz426L8Vb28stL026sms7eK4JuPLIZZSQANjMcgqc5r1XxD/yAtQP/AE7y/wDoJr4Y/Y6z/butZOf+JZZ/+hyV+ecQ5/isPneBwdKVoVObmVt7Lv0OHEYmUa1OC2Z9/injpTc8U4dK/Q0dwtFFFMAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAP/S/fyiiigAooooAKKKTI60ALRSZFLkUAFFJkUZBoAWik3A9D0pcigAopMjGaXNABRSZFGRQAtIaXNNPWgDiPGPijw5pWn32nanqdta3MltIwilmRHIZSAQrEHBIIHFfEP7J+t6Roet6u+sXsNisun2iKZ5FjBZXkyBuIyRnkV7R+1N4BTXPCsXjSzh33eg587ABLWj/f6/88zhx6AHHWviv4eeCZvH3jDT/CoG6K5cm5brsto+ZWz2JBCA+rA9q/mrxA4gx1DibCKNBNw+DX4ubTXtZnzuY4iaxEEltt8z9eLS7tb+3ivbKVLi3mUPHJGwZHU8gqwyCD2Iq3VOztrextYbO1QRQwIsaKowFVRgAD2FWwRX9I0nLlXPufRC0UmRS5rQAoopMigBaKTIoyM4oAWikyKMigBaKM0gIPSgBaKTIpaACiiigAooooAKKKKAP//T/fyiiigAoooPSgBhdeg5PP6V4J8Qf2gtB+HfiV/DF/4X8T6tOkMUxn0vRLu+tCsu7AE8KMm4bTuXOV4z1Gcfxb4c8Z+M/wBorwkJzfWXgnwZps+rMYn8q2v9ZuX+z28cjIwdxbQiVzGw8tjKrHLIMfSYX3oA811T4m6dpnw0i+KEuj6vNZy2kF2LCHT5n1QJcFdqNZBfOEi7/nQruXByMg1gfDD43aN8U9Sv9M0vw74h0V9PhSZ5NZ0i506Jw7FQsbzqodgQSVXJA5PBGfaQpwO360oX/OaAPm3xX+0z4c8JeKr3wld+EPFt9cWNwlsbix8P3t1aOzhCGjnjjMbIN4ywOAQwJG1sekfEf4m6b8M/D9v4i1LR9X1aK4mjgEGk2E2oXKmQZDNDAGcKP4mxgd8V6Tg/nRtJGM0AeWfC/wCLGlfFWw1DUNK0XWtGTTplhZNZ02fTZJGZA+Y0uFUuoBALAYzxnIIHnmn/ALT/AIZ1LxdD4Pi8H+L4rie8ayFzL4evY7IOrunmNctGIxHlCQ+7aRggkMufpbacdaXBoA8g+KHxk0f4VSaamq6Dr2tHUvMCHRdKuNSEfljJ837Or+WD/CWwD0HNbPhD4k6f4x8EzeOrPSdVsLeIXJNpf2M1pfN9lLBgtvKFc7ip8vj5+CuQQa9E2ntxSgEf/roA+cvAH7Snhv4ieJ7PwtpnhLxZpk14jutxqmgXthaoEQOd888aopIIABOSeAMg42fiL8etE+G/iGLw5qHhnxJq00sEdwJtJ0e6v7YLIzLtM0KMgcbcspOQCCeCK9120mD/AJNAHmtz8TdNtPhivxUfRtXayNml79gTT521XZJjCGyC+d5oz80e3cOcjIxXMfDT476H8Utau9E0vw14k0eS0tzcNLrOjXWnQMA4j2pJOiqz5OQoySoLdOa9x2mja3PPWgD5k+IX7R3hTwprWs+DdY8GeLdW+wDyppdP8PXt7azK8SyHypoo2SQbXCnaT8wK9VIHMeFtC0n9nPQNY8d6tpepa0uo3cNtaQ6XYzX95HYucwhoIgzjaWPmnGBjJOBmvsHa3+TS7TXkYvJMNXxNLF1I3nTvyv13Mp0Yykptao8o+F3xa0v4qwajcaVoet6KumvGjjWtMuNNaQyruBiW4VS4A+8RwDwecgefL+1B4ZbxZ/wiK+D/ABf5/wDaB077SfD18LPzFkMfmfaDGI/JJGRLnYVwQcEV9L7Wpdp/ya9exqeUfFD4u6V8KrawuNV0TW9aXUHkRV0XTLjUnj8pS5MiwKxUEDgkYJwByQDo/D74kWHxF8MzeKdO0fVtKghlmi8jVLCaxumMPUrDMFcqf4TjDdsjmvRtpzx0owfrQB84eCv2l/DnjfxPYeF7Dwj4t0+bUJJI1uNR0C9s7VDGrEmSaaNVQHacEnDcYzkV0nxL+OOjfDDVrLR9T8OeIdZkvYGnWTR9IudQhQKwQiR4VYI3IIVsEjJGQDj2vafWgqT0/nQB5xbfErT7n4a/8LPXSNWSz+xtefYXsJl1TYvOz7GR5vmntHt3dsZ4rjvhz8f9C+JXiL/hGtO8MeJtIm+zyXHnatot3YW22MoCnnTIqbzvG1c5IDEDCtj3jac9aNp79KAPnn4gftG+H/h34lvPDOoeE/FeqzWUaSNPpWhXl/bOHTfhJoY2ViBwVByDxjNeg+LviRYeD/BEPjm80fVr+3m+y4tLCxlur4faiqrut4wXG0sPM4+QAlsAGvRdpzx/M0bT2NAHj3wv+M+jfFefUbfSvD+v6KdNjhkZta0m501ZBMXCiI3CJvZdhLAZKgqTjcM8RrH7UPhnRvE954Vk8G+MLiezvfsLT2/h6+ltHk3hN6TrGUeLJz5gOzGSTgGvpgKR1P60bT0zxQB5l8T/AIo6b8LtOsdS1TRdY1pL6c26po+nTajKjLG0m6RIFZkQhSAxGN2FzkgGb4ZfE7Sfijo9zrWk6Xq+kpaXLWskOsadcabMZEAYlI7hEZ05GHUFScgHg16PtNcr450K78S+Dtb8P2Oo3Ok3Go2c8Ed5ZvsuLd3QhZImwcMpwRxQB1gYHpS14z+z74m8VeLvg34S1vxzFJF4iksUi1HzYHtme7t8wzSCKQKyq7oWXjoQRkEGvZqACiiigAooooA//9T9/KKKKACg9KKD0oA+YdI8d+K7n9r/AMTfDabUGfw3YeCtI1SC0KJtS8uNQvIZZd4XeS0cSLgsRxkDJNfTw6V5la/EDwjc/FrUPhfDG/8Awk2n6Na6tM/kjZ9huZ5YIgJu58yJ/l7Yz3r02gAooooAKKKKAEJA60ZryL4+/EG/+FPwW8afEbSbdbvUPD2lXV3awyHCSXEcZ8pXP90vjPtXxl8Qfhv4++CHwVl/aN0/4l+JdU8beF7GHWtZW91F7nSdViRUkvbb+zWxawB0yImgSNkYKc4LBgD9Ks+2aTd7E1+VXj7xB4K179oLxjbfEXxF8R7SOGDRZNNtvCM2umwhjubfzHE66WrQpIXPJk2krg9Oa7xPhVJ41/aN1r4ZT+OvGOnab4J8HeG59OltPEN9DO1xcXF8jzXa+Z5d1IRAm5pUYtyHyOgB+jO4YzRu4zjFfkp41/aM+NHhj4DR6bPPc6/478J/EY+HJrywiVZdU0/QpTqM87xoAoaawhZZkUAFyQq5ZRXvJ+Puq6x+2V4S8IaTNKPA914emt5JRIn2afW7+OLUbWAjOfPisopJMY/1b59KAPvMnHWjIr8kfBnhf4iSfAPxj+0d4P8AiP4jg8b6Jq3iy5ig1DVbi/0S4t9J1a6SO0lsLgyRRwtDCIy0IR1GdrA19Py/tYXmrajFofw98Jrrt7Y6Tpmq6ubvVLbS47U6pCZ47WLzyXluRGNxQqiAMuZAcgAH2du5xRuFfGum/tXXvj2DwdJ8HvBFx4mk8aeH28QWxuL23sobWOGZIZYbmTMmJFZiq+WHDMMZC/NVXwh+1n4g8Qw+E/Emu/De+8O+E/FWqLoK3t1fWslzb6m0skAWS2iZwYGmTykkWQsWYEoF+agD7V3CjcK+LtW/a3uLDTtd+Itl4Jurz4X+GNSn0u/18XUSTbrS4Frd3UNk3zyWtvLvV3LK52MURxgnj/2jf2gfFup/Db40aR8KPCl3qmm+DNE1K01HxAl8tgLe++wtMRYhf3szW6srSMhTaxARmcEKAfoBuFG8V82/CX4tDWfEcfwnns5HutB8IaBrct+8u7z/AO0hNFs2n5gwNuWLEnO6vNPCvxSuvif8ZfhP4mtorjS7PVNG8WiSyFyzQs9leWluryKpEbnglCylkDEAjLAgH29nvSbhmvk7Xv2k9Z8G/EPTfDHjXwgNL0TWdXj0W2vE1W1uL1Zp3aO3uJrCMmRLaZlG1wzMAyl0UbiMX4S/F74veJPjj8WPCfibRIF8K+EtZhs47j7ZEGsLc6dDcoAipvn88SeaxLAx7vLwdmSAfZmaQMD0718baP8AtYXuoWnh3x1feCLmy+Gvi7U7XS9M103cMkzNfzm2s7mazX50trmUoI3DM+JFZ0QBiO0+GXxt8a/E7xZqemab4DksfDuhavqOkXur3V9EA8tkSFe1gUM8ys2EcsU2PkDdgmgD6XooooAKKKKACobiUQQvKRkIpb8hmpqimjWWJo34VgQfoRigDzb4P/EeD4t/D/S/H9rYvpsWpmcC3kcSMnkTPCcsoAOSmRwODg816dXnnwt8C+HPht4J0/wb4TnkudLsDMYXlkEznzpWlbLqADhnNeh0AFFFFABRRRQB/9X9/KKKKACkOMHNLQelAHj1h8J7Wy+OWrfGtb92uNV0Cy0E2eweWkdlcz3Kyh+pZjOwI6YAr2GvlrRz4yH7Y3ihZzf/APCK/wDCEaP9n3CX+z/t/wDaF553l5/ded5fl79vzbdu7jFfUo6UAFFFFABRRRQBxfxG8C6J8TvAXiH4d+JA50vxLYXGn3Plna4iuYzGxU9mAOQexr4zuvgn+0/488D6f8Bfidrfh1/BFstrbanrlkLg6rrNhalSbdrGRPItTOqhJXE02V3YVS2V+/yM98UmM0AeN+Bvh5qXhb4j+OvFc00R0/xMdO+yxIzb4xZW4hIfPA6DGPxrynxX8Lvjdp3xv8S/FL4W3egRR+JdB0zRidWS5ke1k0+W6lWYRwsolGbjlCyZ2/eGePrsLijHvQB8TfDr9lfWPAWu+ApL3X01yz0STxLq+vTzReVNqmv+INoa5SIZWOONWmRELMQjKCWIJPP/AA8/Y8l+GXg3wnpPh+7t59W8MeOJPEsc88kxDWLebZRW7MSXZ4dLkW3j3EqCi/wgAffG3nOaTZgYzQB+eFj+zJ8dbv4aat8Bb7xPpGheCdc1jVry/vtPjmm1efTtW1Ge9ls4zJtigZll8sy4fC5woOGHSeNf2bPFOj/ErWvHHw48N+EvF+n+KIdPhuNP8URvG+nSWMJtxPa3EcM5eN41TdblEywLeaMgD7sCgUHrQB886D8JtW0r4m+H/GjLp1nY6X4Yl0eS2sozDGt1NPHM7Qx9FiJU4BOee9ebw/s7+MYvhR4N8CjULJb/AMOeMbfxFPLiQxPaxam960aYIbzDG2wE8buSCOK+zcZ4oI/SgD89tT/Zs+NH/CG+Kf2d9G1HRYfhf4r1K/vW1Z3nGt2lnqt617eWS2wj8iRyzyLFcGVdisoaJimXteL/ANnb40WWhfFj4V/De48Pv4H+Kq6nL5t+1xDfaTPqdottOqRxq6XKsyl1LPFsyBh+a+/8Y6Ubc85oA+LZfgz8ZvBPxDsPH/wxudDvJNV8LaV4Z1eHVWuIxanSzK8V5amFX87mZw0D7N42kSJghs3wJ+z/APFn4fp8I9VstU0jUtS8GvqtnrccqzQw3VlrVwk081oy7jHNGyBkjcMrfc3LnePuXbRt96APzH/4ZR+NVjFdaPZw+E702fi+PxUniG8+0ya3rIS/N2ltcsEUWrRR7bdZVkmUxRqvlqDgfROlfCv4neEPjb401/QF0nU/A/xOura91c3VxNBqWnyW9gliVtY0ieKdZViQ/O8ew7j8/AH1cEx3p2KAPz98P/s3/GSPwj4J+AevahorfDbwHqWlXkGpwtOdYv7TRbkXVlay2zRiCFw8cSzTLI4kCttjjLDb9P8AwX8Baz8PNA1nS9duIbmfUde1jVEaDcEEOo3ktxEh3c7kRwrdsjI617Hgd+1N2+9AD6KKKACiiigAqteI0lrKijcWRgB65BqzVe6laG3klUZKKzY9cDNAHgX7LXhTX/BHwO8OeGPFOmPo2p2ZvPMtJDGWjEl1K6f6pnTlWB4Y9a+ha8d+AvxE1P4rfCzRfHes2kNjeal9oDwwFjEvkTyQgqX+bkID/LivYqACiiigAooooA//1v38ooooAKQ9DS0UAeI/Gj4uz/BnT9I8VajoFxqnhZ7zydcv7Ul30e1ZG2Xj26qzywiXaspXHlqxkOVU16boPivw14p0C08VeG9TttT0a+iWa3vbaZZbeWNujpIpKlffNbc0Ec6NFKAyOCGUgEMDwQQeo9q5bVfAXg7W/CF14B1TR7Wfw5e272s2n+Uq2zwP96MxrgbT3AoA6C31PT7t/LtbmKZhzhJFY49cAmmy6tptvIYbi7hikXqrSKpA68gkdq8e+HH7NPwF+EWvyeKPhl4F0rw1q0tu9q9zYwCKVoJGVmjJHVSyKSPUCszxv+yf+zf8SfE97408efDvRtd13UvL+03t1bCSaXyo1iTc2edqIqj2AFAHvct7awQi4nmSOJsYdmAU7umCeOe1Ntr+zvNwtJ45in3tjq2M9M4JrifGHwp+HnxA8Gr8PvGugWms+G08gCwuU3wYtseUNuf4MDH0rF+GPwG+DvwYk1GX4VeENO8LNq4iF2bCEReeIN3lh8ddu9sfU+tAHpTaxpSyGJryAOp2lTKmcjjGM9amuL60tADdTRwhjgF3C5PoM45r57vP2Qf2ZNQ8UzeN734baLNr9xetqMl8bUee140nnNMXBzvMnzE+vNeh/Ev4NfC74yafZ6T8UvDNl4os9PmM9vFfReakcrKULqOmdpIoA9DgvbW5VntpUlVDglGDAH0JGarR6xpUzrFDeQvI5wqrKpJPoADk1xXw8+EHwy+E2g3Xhf4beG7Lw3pN7M9xPbWMQijkmkQIzsB1JVQufQAdq878I/sjfs0eAvElj4w8GfDjRtG1rTJDLbXdrbCOaJ2UqSrA8ZViPoaAPf7nUbGzZUu7iOFn5UO6qT9MkZp6XtrJb/ao5kaADJkDgpgdfm6cV5N8TP2ffgt8Zb2x1D4p+DtN8UXGmxtFbPfw+cYkchmCZPAJAJre034S/DfR/h4/wm0zw7Z23g+S3mtG0pI8WrW9xkyxFP7r7juHfJoA7WDVdOupPJtrqGaTBIVJFZsDvgGkuNU062k8q5uooXwPleRVP5Eg1438O/2ZPgD8JfEB8V/DTwJpXhvVzA9sbqygEUphkKl0JB5BKg/hVf4gfsu/s9/FTxHJ4u+I3gHSfEWszRRwtd3kAllMcQwi7ieAo6UAe4veWsVv9qeZFhIB3lgEweh3dKittTsL12jtLmKdkGWEbqxH1AJrzXxp8KvhzrPwmuPhdq3h2yu/CVpZRQRaXJEGtEisgrW6LH0CxFFKDsQK+R/2L9H0iw8S+ILqwsLa0ludNs/NaCFIi+JJThtoGQCxIHbJ9a+UzbiiGFzLDZe4XdW+vayOWriOScKaW59/yaxpUUjxy3kKPGcMrSoCD6EE8fjVme9tbRFe7mSFWOAXYKCfQE96+fPEn7JH7NPjHxPeeNfFPw40bVNd1GcXNxe3FsHnlmGPnZic54FejfEj4Q/DP4waNa+Hvif4csvE2m2U4uobe9iEsaTqjRiQKf4grsPoTX1Z1He299aXYZrSaOdUOCUcMAfQ4zioF1jSnkEKXkLSE7QolUnPpjPWuF+Gvwb+F/wd0270f4XeGrLwxY30wuJ4bGLykkmChN7AHrtAGfSvPtK/ZF/Zn0PxVb+ONJ+HGjWuv2l2L6K+S2AnS6D+Z5ofOd+7nPrQB9A3F/ZWbBbueOEtkje6rkDrjJFOjvbWaE3EUyPEM5dWBXjryOOO9eV/E74B/Br4zz6fc/FTwhp3iiXSllS0a/h87yVmKmQJk8biq5+grb8LfCf4c+CPBL/Dfwl4ftNJ8MOs6HTrePZb7bkkzDaD/GWJP1oA7OHVdNuJFit7uGV26KsisTj0ANLNqen2z+Vc3MUT4zh5FU49cE14h4C/ZZ/Z4+F3iODxd8PPh/pPh/WbZHjju7O3EcqpIMMNwPII65q18RP2ZvgF8WtfXxT8S/AmleJNXSBLZbq9txLKIYyxVAxP3QWYge5oA9qa9tVtxdGVBCQCJCw2YPQ7umKjttTsLxmS1uYpmXkhJFYge4BNcTe/Cf4c6j8PE+E174ftJvB0dtFZLpTR5tRbQ48uLZn7q7Rge1c78Nf2ePgj8HdRvNW+F3gvTfDF5qEQguJLGERNLGrbgrYPIB5oA9Ul1nSoJGinvII3ThlaVFIPuCc1ZnvLa2jEtzKkSE43OwUe3J45r588Yfsjfs0+P/El/wCMPGvw40bWda1RxJdXlzbCSaVgoQFmJ5wqgD0Ar0r4gfCj4c/FXw5F4Q+I3h+08RaLBLHOlpeR+ZCskQKo23PVQxA+tAHbW1/Z3gZrSZJwvB8t1bB9DgmvNPEnxn+F3h7xbovw81fXYH8ReI5TBaadb7rm6YbWLSSRwh2ihG0hpZNqBiFLbmAM/wAM/gr8Kvg1ZX2nfCzwxY+F7bUpEmuY7GLyklkRdqsw6ZA4q/4Q+FHw28AXuo6l4K8Nafol5q88t1eT2tskU1xPM26SSWQDczMeSSeaANfwb4P8OeAvD9p4U8J2YsNKsd/kwhncJ5js7fM5ZjliTyTXVUgXBzS0AFFFFABRRRQB/9f9/KKKKACiiigAoopuT070AOopm78qXdQA6imbu1LuoAdRTcmgNQA6im7qTd6UAPopu7v2PSk3ZoAfTTRuppPftQB8+fGr4vy/Dp49IudDlvLbVbaTy7lJVVA4GGQhh1AIPXkZ9K+K/gv8UIvhTqF9eS6bLqf2q1hgCxMFYGFmPQg53bsADvX338avAY8f+BbzTrZAdStP9JsmPaeMHC57BxlT7GviP9njwAfF/juK/vYWOm6EVupQ4xmfP7mIg91YFmHqor+afEDDZx/rLhVh56P4Hb4b/Ff03PncxVb6xHl+R+lOj3d1faZa3t9bGyuJ4leSEsHMTMMlSw4JHTIrSHSo1IAxTt1f0lSTUUpO7PorD6Kbu/CjNaAOopuaTd2NAD6KbupN3bFAD6Kbupu888dKAJKKZuNLuoAdRTN1OzQAtFFFABRRRQAUUUUAf//Q/fyiiigAoNFBoA888VfE/wAKeEfFPhfwTqs0j614wnmhsLWCNppGW3TfNPIFzsgjBUPI2FVnRScsoPEePPB/x11rxNJfeBviFZ+HdEMMSpZS6Qt3KJl3ea5naVchsrtXaNuDknOBOPC/g69/aIk8XT+IEuvE+meGktItGPlF7Ozu7pme8X5fOUXDxCM5bYfJGBkE17iFHX1oA85v9C+Ilx8OotCsPE8Ft4uW2t431g2IaFrhCpmlFoXwBIAwCbztyOTisH4a+Ffi/oGoXk/xH8cW/im1lhVYIYdMWxMUgbLOWV3LZXjHbrXsgUAYFLtFAHzp4l8DftDah4n1DUPDfxNs9J0WedXtbJ9FSd4IQqBozMZQXJYO27AwGAxxk+ifEHQviHreg29l8P8AxPD4a1NJkaW6mslvFeJR86eWWUAsec54r0faKMCgDy/4a6B8StAsr+L4k+K4PFFxNIrW0kFgLAQxhfmUqHfeS3OeMCuCsfAv7Q8XieHUL/4nWc+ireNLJZLoiK7WxckQibzSQQuF347E454+jcCk2igDyX4leGvivr8lg3w38Y2/hZYRJ9oE2nLfecWxswWdNm3n1zWp4T0P4g6b4Kn0rxX4lh1nxG32ny9SjshbRoXLeQfs4dgfLBGfm+bGeM4r0fA6UbRQB8/eCfBPx60jxFZ33jb4j2uvaTGriezi0dLR5WKYUiUSsVAbnpzWj8QfCPxq1vXkvvAHj218N6WII0a1l0pbxzMGYvJ5pkU4YFQFxxjPOePcMDn3pNoHSgDzR9B+JDfDKPw+vimBPGYs44n1oWA8lroY8yYWZkICtg4TecZ6nHOD8O/CXxl0LWbm7+Ifju28T6dJAUhtodLWyaObepEhkWRsgKCNuOc5zxXtO0UbV9KAPnTxj4G/aF1bxBqd/wCDfibZ6FpVwwNpaS6Il01uojVSGlMymTLhn/h4O3tk9Bq/w18R6b4YvLD4U65b+Fdc1O+S+u76SyF3HIzY88CEuuN+PlO75c9D0r2vaKNoxisZ4enKcZuOsdn2vuDSbueWfDbw98TtAhv1+JHi2DxVJO0Zt2hsFsRAFB3ggO+7ccdelcL/AMIL+0OfE41H/hZtmNF+2mX7D/Yib/svmFhB53m53BMLvx1GcV9G7R35pcCtgPKviX4d+KGvxaevw28W2/hV4JHa6aewW+89CpCKAXTZtODnnI4+mj4E0Tx/ovhybT/HXiWLxFq7ySsl5FZraKiN/q18oMwO31zzXom0DtRgUAfPHhLwP8f9M8SWN94u+JVprWjwuxuLKPRo7d5lKkKolErbcHBJxz+NdB8RvCvxh17VrS5+HXji38MWUcJWeCbTFvTJLuyHDs6bfl4xg17PtFJtFAHnVnofxBi+HI0K78TQz+LfspjOsCyVYftJ6Si13kbR/c3n61yPw98H/G7RPEP2z4geP7XxLpXkSILSHSVsn88lNknmiR+FAbK7ecg8Y590wKTaKAPn7x34K+Pms+Ir6+8C/Eiz8O6VIiC3tJdHS7aJggDM0rSqXy+WAwOMDtmu58XaH8RNS8Ew6R4Q8TwaL4kX7L5mpzWIuo2EbKbjFvvQKZVDBTuOwnOGxg+khQKTYuSfWgDyL4aeGPi1oF5qMnxJ8aW3iq2njhFpHDposGgkUv5rMyyPvDgoAuBtKk5O7C8XqvgT9ou68RXd/pfxQsrLSJbsyQ2baIkjxWxfIiMpmG4hfl34HrivpIKB0o2jrQB5j8StB+JPiCwsIfhp4pg8K3MM7Pcyz2AvxNAY2AjVS6BCHKtu54BGOcjK0K/8UfC/wHrPiL42eK7XWodIE15Jf29g1mIbOJAxDxK8pdhgklcccY4zXse0VT1Gxg1GxuLC4UPFcxvEysMgq6lSCO4INADdL1Ox1rT7XV9KnS6sr2JJoZY2DJJHIoZGUjqCDkGr9eS/A34fX3wo+FXhz4cahfQ6i/h+2+yRzW8TQxeRGxEKKjvIQEj2r949Ow4r1qgAooooAKKKKAP/0f38ooooAKQ9OaWkPSgD540v4Y+JbT9qTX/jFKbc6FqnhLTdEiCuftAu7O9uriQsm3AQpOu0hicgggcE/RFfNulfEjxRd/tXeIvhNNcRnw9pvg/S9ZhiEaiQXd1fXUEjF/vbdkKAL0HXvX0kKACiiigAooooARjgeleS/Ej45fCn4Ry2Nr8RPE1to11qYdrW2ffJczLHjeyQxK8hRdw3MFwMgE8ivWW6V8TfBJLHUf2rvj5qPiACTxLplzollYCVQJYdCawjlj8nIz5L3T3GWHBcMM5GAAfQnh/42fDPxVqnhfSfDmtx6jN4z0261fSWhjkaO6sbJ4kmmWTZsUK00fDEE54BAOPVA2ee1fB/xo8K3/i79rn4TaJofiO+8KAeGPFMkt1pQgFw8K3OnBoFeeOVEVmZWZlTeCgAIBbPJr8UfFVn8HE8K+J/F3iTUvFVt40v/Denz+HrWxOta2tlJLLHAxuI/ssP+jr++uG8sDyydylgKAP0dJPb86buOM1+UV18ZPjnpfwt8e+GrnW9V0bX/CnxE8NaBZ32pLp9zqken6zNp8jJcm2D2kpEd0wUqMlCu47wcb3xU8e/Ff4ML8ffBOl+O9U1s+G/AFn4q0m/1JbV7yzvpZbuCQI0UEcbRk2yuEZDglgPlwAAfp+Gzzml3e9fnzqPij4m/A/4h6at7401Px3p2t+CNd1y4tdWS1UJqWkC2lie3FrBD5UcizOrp8wAVSOck+dfBLxh+1V4lufhn44ksfGF6niGS0ufEb6o/h//AIRmTT76PfLJp6WkzX0QgLK1sWXc6DEw3EkAH3bd/Hr4T6d4Eu/ibqfiGGx8M2OoTaXNezpIkaXkF01lJEQV3ZFwpjzjBPQ4INQfDf8AaG+DPxf1O70b4Z+LLTxBe2EK3E8Vt5hKROzIrHcqjBZWHrkGvz115dSf9jmRNFeBdQPxcIt2nBeETf8ACbnyzIqEMV3YLKCGxkcGvs3xXpP7Tz/BvxZaRatorePZ3Y6XcaHbSWaLbFlyg+3yXKfaSN4V2/d5K5T1APpa81Kx06NJtQuY7ZJJEiVpWCBpJGCogLEZZmICjqTwBmsTUvGnhjSPEuj+DdT1KG31vxBHcyWFozYluEswrXDIMciMOu49tw9a/Kv4p6jH8QfhT4UsofGfi+HV9D+KPhay1Cx12Ozh1PSp7ye2QQuyW4ilEO/7TbzK0i+Y2N7ouwfUviyfxp4E/aU+EvhS18X6tqeia34f8Qx3ttem2dJZ9JiieG6Zlt1fzn+0EPh1QhEwn3sgH2tuJOKNx6ivyE8Ea58eNe+F37PfxAm+MHiI3/xZ1BdN1UNDpbRW9pcWd1cq1un2MKsyNbqglYMSHJKkhcexXHjzxX4N8NfFPwF4n8d+JL6Tw94p0zS9CvdOt7K48Q3X9pwW88WnIZIRbs8kjvGJpETYh3MylS9AH6IXl9a6faS39/OlvbQKzySyMEREXklmbAAAHJJAqaKaOeJJYXDo4DKykEMDyCD7jpX5CeOvFPxL134C/tR/DHx/f69bnwdotrq1gusPp8mpLZ31lJK1ndTWCtbywvJbyBsN5uxiCy/KR9K+NG8d+CfD/wAIvhJ4b8d6qknxD1sW95rt59ll1CCyi0+W8a2tGECwqzmFY1LRMwjLkHfhgAfdO49e1G4/XNflj8SvH3xn8Ay/ED4P6J4/v7q70jWvAsmk67dQ2sl9aW/ijUvsU1ncBYVinEJiZwzIrMkgU8rvb9G/A3hS98HaM+lah4h1HxNO8zzNd6m8TzZk/gHkxxIqL/CAvA70AdtRRRQAUUUUAFVbwsttKUJDBGII65watVFPIsMTStyEBP5DNAHz3+yrr3iHxL8DPDms+Kr+41TU7hr3zbi6JMzhLuVE3EgdFAA46CvomvOfhT8RNM+K/gbTvHmkWk1ha6iZgkNxs81PIleFs+WzLyUOMMeMV6NQAUUUUAFFFFAH/9L9/KKKKACkJABJ6UtFAHmVn4s+H9x8WdS8E2yxjxrZ6Pa39yfs5WX+zJ55Y4M3G3DL5scnyBiVPOBkE+m14lp/wnubP9oLWfjadTVoNW8NWGgiw8khkayu7i587zd2CG8/bs2gjGc84Hto6UAFFFFABRRRQA1sd68E+J37N/ww+K3iK18Z65b32meJbO3+xpq2i6hc6RqLWm7f9nkubN45Hh3EtsYlc84zzXvtJgUAeMeE/gL8NPA+o+GtW8OafLBd+EbG/wBPsJJLqaZhDqcsU12ZWlZjLJLJErtI5LE5OfmbOTr37N3ws8R6JPol3Z3Vt5uty+Io7m0vZ7W9ttTmBV57e4iZZIiysyFVYAoxUgqSD77gAYowKAPmXS/2S/gzpFlqen21hfSW+sXmkaleCfUru4ae/wBElE1rdu8sjM05ZV86QnMoVVcsFAHZ+NPgN8NviBqHijUvFGnyXFx4z0OPw5qZS4ljE2mxSSyrEoQgIQ00h3rhvmxngY9nwKMAUAee3/w28Ian4m0TxdfWZm1Dw/Y3WnWrM7FBa3gQTI6fdfcIl+8OPxNeceBP2Yvhb8N/E1t4j8IjVbNLDzPsWmnWL6TSLLzQVYW2nvMbeMYOFATC84xk19E4HpSEc0AfOep/stfCDV/DniXwlcWN5Fo/irVoddu7aDULmBI9RgmW4E9qUcNblp1Er+UVDPljyTlmjfswfDnQ9G1zQbXUPEk9t4hhjhuDdeJNVu5oxE5dWt5Z7h3gcMfvxspPGegr6O6cUDApX1sOx842n7K3wdtvAGsfDuWxvL6z1+7j1G9vbzUbq51Sa+g2eRdG/lka4E0IjQROHygVQuMV02j/AAH8A6TqHhHWCL/UtS8EWupWmm3moajc3lysOrFPtQllndmmL7Fw0hJXGFIHFe0cU7ApiPEtI/Z/+GGieGfAfg/TNMeLTPhpdJd6HGbiVjbzRwywKWYktJ+7mdSHJ656gGq3ir9nf4YeMYfE0OsWNwH8VX9nqt3Pb3c1tcR39hGkVvcW80TK8EkaxqA0ZB717vSYFAHzv4Y/Zf8AhF4WbxT9m0+5vx4309NN10ajfXF9/acMYdQ90bh3Ly7JGj35z5eE+6qgU4f2VPhSvgP/AIV3fnWNT06K9j1Cznvtav7q/wBPuoY/Kjksb2WZri1KR5VRE6gAsMfM2fpTaDyRS470AfO+kfsxfCTRvC8nhVLG8vIrrV7HXbq7vb+5u9Qu9Q02aOa1muLuZ2mlMbRIFV2I2qExt4r6HwPSlwKKACiiigAooooAKhuIhNC8R6OCv5jFTVVvQzWsqp94owGOuccUAcB8Jfh1p/wo8B6Z4D0q7mv7XTTMUmuAgkbz5XmOdgC4BcgYHTFek188/ssaP4j0H4G+HNL8WQXVtqkJvDLHe7/tAD3UrLu8wlvukYyeBivoagAooooAKKKKAP/T/fyiiigAoPSiigDw/wCNfg34k+JdJ03W/hL4i/sTxT4cuftlrBcs/wDZepAoyPZ3yIC3lyK3yyKC0ThXAYAo29Z+L/G9j8Lx4w8U+D5l8TW9mZ7jQdLuYr2ZrhesFvM/kxyFv4SxUeuK9SpMDGMcUAfP/wAL/jP4v+IHiGXQ9e+FHijwRbpbPOL7WRYfZmdGVRCv2W6mfewYsMrjCnJBwDkeP/jz438GeK7/AMOaR8GPF/iu0s/L2anpg002dxvjVz5Xn3kUnyFijbkHzKcZGCfpcADoMUYHpQB5r408d614U8Dx+LtM8H6t4lvnFuf7I04W5vgZsbgfOliiHlZ+f952OM1hfCj4peJviRJqaeIPhz4g8AiwEXltrf2MC6Mu7Ih+y3M/KbRu3bfvDGecez4GMY4owPSgD5f1L9oHx3YeMJ/DEHwS8Y3tnFe/ZBqkQ037E8fmbPtC7rxZfKx83Me7b/DnivSvip8Rdf8Ah1pljf6B4G1rx3LdzGJ7fRBbGWFQpbzJPtU0ChMjAwxOSOOterYHpRgelAHmHw38fa7478N3Gv614L1jwbcQyyRrp+rC3+1OqDIdfs800e1jwPnzXmXhL4/eN/Evi2x8Naj8FvGHh+zvJmibVL5dO+xwqAxDyeVeSShTjAxGTkjIHNfTm1fQUYHpQB4f8Vfi14o+HV9YWegfDTxH48W9jeR5dEFmUtyhACSm6uIOWzkbd3AOccV1Gk+OdZ1H4dHxzP4R1aw1AW0k/wDYc6wf2lvjziHCSmLzGx8v7zb6t3r0jA9KNq9MCgD57+Gnxq8YePvEZ0PXPhP4o8E24gkmF/rC2Ati6FQIh9lup33tuyuVAwpy2cAwfEf44eMfAnieXw/ovwh8V+MraKKOQahpK6ebVi4yUH2m7hkLL0b5cZ6GvovaB2prBSelAHmXibx9rHh34dL46g8I6pqt75NvK+jW3kfb089lDqfMkSLMIYtJ+86Kdu44B4v4QfHuy+Lmqalplr4fvdH/ALOgiuBLdS2siTCV3UBPs80pBG3J3AAgjBPOPZ/EOP7Cvx/07y/+gGvhr9jr/kO60Sf+YZZ/+hyV8DnvEtfDZzg8BC3JV5r99EcOIxEo1acFs7nsPin9oDx14d8WX3hvT/gl4x161s5/JTUrJdN+x3C8fvIzNexybOf4kB4PavT/AIoeP9c+Hmh2mr6F4K1nxzPcXKwNZ6KLYzxIUZ/Of7VNAnlgrtOG3ZYcYyR6dgYp+B6V98juPKfhb8Rdf+IelX2o694G1rwJLaTiFLfWxaiWddobzE+yzzpsydvLA57Y5PnGk/tAeOdT8YQeF5vgp4xsLOe8+ynVbhdNFlHHvK/aG23jTeXgbv8AV7sfw19OgAdBRtHpQB4r8Vvit4m+HFxpsPh/4ceIfHwv1laR9EWzK2vlFQol+13EHMm47du77pzjjO94Q8ea34o8CP4y1Hwdq3hy+RZ2/sbUBB/aB8kkKMQyyxZlxlMSHqM4OQPTMD0owOmKAPnH4d/HPxp448UW/h/Wfg94s8H2s0budQ1ZdPFqhQZCt9nu5pAzdANvXrVr4mfGvxj4B8SLoWh/CXxT41t2t45jf6OLA2odywMR+1XUD71xk/LjkYPWvoTA7Cjauc4oA8yvvHut2nwyTx9F4O1e41NrSK5OgRiA6oryYzbkGUQ+Ymfm/ebeDhu9cx8Lfi54q+IepX1hr/wy8R+BY7OJZEn1sWYjuGZsFI/slzP8w6ndt46Zr3TavoKMAdBQB8w+Nv2gPHXhTxRqPh/S/gn4x8S21jIEj1HTl002lyCobdF597FJgE7eUHIPXivVPiP481rwL4Yi8QaJ4P1bxlcySxxHTtIFubtQ4JLt9pmhj2pjDfPnJGAa9KwPSjAoA8l+FPxJ8QfEay1C68QeA9b8ByWUyxpDrYtRJcKy7i8f2Weddq9Dkg5riNO8c/H7xd48tdN0rwJD4S8H2F1KL/Utcuo5by8iiZ0C2VnaM20SYV1lmkUhTgx5yB9I4HpRgDkCgBiEng1JRRQAUUUUAFFFFAH/1P38ooooAKKKKACikPSse88QaDYS+RfalbW8g/hkmRG/JiKANmiud/4S7wr/ANBmy/8AAmL/AOKo/wCEu8K/9Bmy/wDAmL/4qgDoqK53/hLvCv8A0GbL/wACYv8A4qj/AIS7wr/0GbL/AMCYv/iqAOiornf+Eu8K/wDQZsv/AAJi/wDiqP8AhLvCv/QZsv8AwJi/+KoA6Kiud/4S7wr/ANBmy/8AAmL/AOKo/wCEu8K/9Bmy/wDAmL/4qgDoqK53/hLvCv8A0GbL/wACYv8A4qj/AIS7wr/0GbL/AMCYv/iqAOiphPzVgf8ACXeFf+gzZf8AgTF/8VTT4t8K9f7Zsv8AwJi/+KoA+av2nl8aaJZ2Xirw3rF3aaew+x3kELgRgyf6qQgqcZOUbHXcPSvjHwHdeME1230bwRfzadfaq0dopgIHGSQWBBysY3OfYGv1C8V3fgbxZ4dv/DmpavZNbahC8L/6THkbh1HzdR1FfKv7O3g/SfDniTWPEXifUbOO40yWTT7XdPFhmB/ezr8x4cbQvoMjvX88cc8BYvFcQ4atQnLknq3d+7b4rdrrbzPAx+BnPERlF6P8D7a0exfTdLtLCS4ku3t41jaaY7pJCowWY9yTya1B0rmx4t8LAYGs2Q/7eYv/AIqnDxd4VA/5DNl/4Exf/FV/QdKkoRUF0PfsdHRXO/8ACXeFf+gzZf8AgTF/8VR/wl3hX/oM2X/gTF/8VWgHRUVzv/CXeFf+gzZf+BMX/wAVR/wl3hX/AKDNl/4Exf8AxVAHRUVzv/CXeFf+gzZf+BMX/wAVR/wl3hX/AKDNl/4Exf8AxVAHRUVzv/CXeFf+gzZf+BMX/wAVR/wl3hX/AKDNl/4Exf8AxVAHRUVzv/CXeFf+gzZf+BMX/wAVR/wl3hX/AKDNl/4Exf8AxVAHRUVzn/CXeFf+gzZ/+BMX/wAVWvZ31lqEX2iwuI7mI8BonDr+a5FAFyiiigAooooAKKKKAP/V/fyiiigAoopD0oA+Uvjdq3i/x3490D9nvwRrFx4dj1ezn1bxDqtk4S9ttJicQrb2sgO6Ga7lbasyglESTaUk2MIdP/Ya/ZNsrZILj4YaNqc3JkutQgN9dzuTlpJricvJJIxyWZmJJrH0L/k/fxhzwPh1oX/p11CvswdKAPlv/hiX9kj/AKJF4a/8FsP+FH/DEv7JH/RIvDX/AILYf8K+pKKAPlv/AIYl/ZI/6JF4a/8ABbD/AIUf8MS/skf9Ei8Nf+C2H/CvqSigD5b/AOGJf2SP+iReGv8AwWw/4Uf8MS/skf8ARIvDX/gth/wr6kooA+W/+GJf2SP+iReGv/BbD/hR/wAMS/skf9Ei8Nf+C2H/AAr6koyKAPlv/hiX9kj/AKJF4a/8FsP+FH/DEv7JH/RIvDX/AILYf8K+pKKAPlv/AIYl/ZI/6JF4a/8ABbD/AIUh/Yl/ZI/6JF4a/wDBbD/hX1LRQB8s/wDDEv7JHT/hUXhr/wAFsX+FL/wxN+yT3+EXhr/wXQ/4V9S0UAfLP/DE37I//RIvDX/gth/wpf8AhiX9kj/okXhr/wAFsP8AhX1JkHpS0AfLf/DEv7JH/RIvDX/gth/wo/4Yl/ZI/wCiReGv/BbD/hX1JSZA70AfLn/DEv7JH/RIvDX/AILYf8KP+GJf2SP+iReGv/BbD/hX1JRkUAfLf/DEv7JH/RIvDX/gth/wo/4Yl/ZI/wCiReGv/BbD/hX1JRQB8t/8MS/skf8ARIvDX/gth/wo/wCGJf2SP+iReGv/AAWw/wCFfUlFAHy3/wAMS/skf9Ei8Nf+C2H/AAo/4Yl/ZI/6JF4a/wDBbD/hX1JRQB8tH9iX9kjH/JIvDX/guh/wrhvGn7J/hz4e6XeePP2WLWP4eeNdKiNxBb6ezwaTqvkjf9k1CzG6F0lVSnmBPMj3bkYGvt6qd+M2c4/6Zv8A+gmgDhvhL8QbP4rfDXwz8R7G1ksYvENhBeG2m4lt3kQF4ZB2eNsqw7EV6LXy/wDsanP7OfhTnODfD8ryYV9QUAFFFFABRRRQB//W/fyiiigAooooA+NNC/5P48Zf9k60L/066hX2WOlfGmhf8n8eMv8AsnWhf+nXUK+yx0oAKKKKACmucDPuKdWH4m1OTRfDup6zFE872FrPcLHGpd3MUbOFVQCSxIwAASTxigD4/sf2w9Cvfg58bPifb2kLz/CLUdasDbeYVS6exXfaZcglftG5VYgHDbgM4r0+2+NV7qN38IW0y0t5LL4kQyTTvubdAFsvtQ8rHB+f5Tu7e9fn/wCB/wBnnxzczfA/RJfDq2/hP4maRY6p8Qba7tiJE1DRJTq1skyvsKyzT3Jil3xkkRAfKRXrfwy0fxNoWmfCDSrrRtQtY/hzq3jDTGMttICLbT0uobOQDbzHNH5flMBhhjbxQB7Vo37W/hTVvhv8YvHytAF+E+o6nYTqGbY5s4w0RY9cuzBW29DkDkVb1j9o7WNa8OfC60+FGk2mueLPirYrqNlHdTvDYWdhHAk11d3DorSFI96oiKNzyMqkqMsPjjwR+zr4+vIPgvBcaPFp+k/Eqys774jWzQyRStd6ZLJq0e5AQiNPcTmK4DqTIp2kkCuk8G6P43+Dlz8Nvifqnhm/1DSPhxc+LfB2qwafayS3Fpod1fefpl5b2sab5oo44II2ESkhWJUEgCgD6/8Ahx8YPiCfinffBX4z6HYaV4hOnnV9KvdJnknsNSsUlEU2BOqSRTwuy+Yh3LhlIY5re+M/xZ8R+DdW8MfD34c6Tba5458ZSziygvZ2gs7e1swr3V5dPGryeVGGVQEUlpHReASw8f8AAOqaj8eP2lbD4z6LoepaX4J8F+HrzSrG91S0n06bUr3VZ4pLjy7W6jSYRQJboA7gbmY4BABOv+0Jb6/4B+L/AMN/2hbLRr7X9D8OW+q6JrcGm273d3a2WrCGVb2O3i3SyrFNbIjrGpbbIXxhCCALpnx8+JnhbxL4n+G3xh8PaZY+JbLQL/xJod1pNzPPp2p2Vj8sqOJkSSCaJ2i3p8wIcbGbaxEPwX+Jf7T3xL8L+CviNqui+D7Pwt4n0+01WZLe9v21CG0u7fz1CRtD5bSgsqkFwo5+Y4wfL9XvtV/aD+JmrfFrwloGq2fhHwZ4H8Q6RZ3WpafcWE+qalrCxOwtrW4RJ2SJLfBZo1DM4CbsHHp/7JPwI8CfD/4E+APE9v4Ri0Lxlc+ENOh1KRoXhuzNJaRNcJMjYYOZB86kAhh0BoA8v8GftYfHaH4UeE/2hviX4L0EfDbxFDaT3k+jX9y2o6TBeTeUtxPBcQrFJBECrzssoKLvOCEyfpTSfj/o2o/tHa/8AZ/s8UuleHbDXoJvMPmTrcSzJOuw8BYVWJtw/wCemDjAz8E+BLrxj8Qf2MvBH7J3hzwVr0HiPVNLsNH1241PSrrT7HS7BnBvZHuLhY1eQwbkiWLeRKV3KAGxrfEH4VfFC+i8e/Gb4ZWk1r4vm8ZjR9Me5t33jQLixttBnDo21zbxyBr1dhUMUDgkE7gD2ub9sPXfEXwRs/iX8P8ASdPn1PU/Hi+DYILuWX7KqTao2nwTyNGN43RmOVgBxuIGeDXrvw/+M/j23+KJ+C/xw8P2Gh+IL6wuNV0i90m6kutN1GztHSO4GZ445IZ4fMRnjYFdrAq7YbHxF8Q/hpJ8JLjXfh34K8HXyeFtA8ZfDnxTB/ZtjLOksEDRwagIUhU+ZJCliHdVy3zrnlhXpvxJ8PfEn9qfxZ4j8YeAdB1PwrpPhvwP4i0LQL/V4ZdKutR1nxBHEC8UMgWeGCBYVXzHRWLs2FwoZgD7K8H/ALRXwM+IHiW58G+CfHGk61rdqsrPaWt0skhWBtspTHDhDwxQnHeuY+Dv7UXwq+NOo69pHhnVIEvtEu7+AwO7b5LbT5vIe6+ZFCxl84yenOcV8nfBPw14b8beJ/ht4d1rXfH0Ws/Dpo9Qi0bU/Dtvp+naVcW1q1q0D30OmxRPGVldVEVy+/rkgE1o6tB4l1z4ffHv9m3Q9P1TSPH2v3Gv3WkTvY3UVjdW16qzRPFqKRm3XfvaIK0iybg3y7cMQD7N8DftBfBL4l+ILnwn4C8a6Xrur2ivI9ra3CvLsjYo7oON6qylSyZAIPpVax/aN+BWreM5Ph1pfjjSrvxHFNNbGyhuVkl8+3QySwjHytLGilmQEsADxxXxR8LvDul/E7WvCtpF4m8fjxJ4Gs7ie007W/D0Gk2WlXb2T2ZglvINNt0kAEhCrDPJG2N2T8pr0n9k34jeF/B/w7+H3wA1XwPr3hvxjoVrFYX1jJod41pa3MCsJrltSSI2bRyspZZRMS+4HvQB6/8AAv8Aav8AhJ8edJ1XU/DGrQQSaQ9488MsoLJYW1zLbx3rNhVWGfymkQk/d685A7vwH8ffgz8T5r628AeMNO12fTYFup47aYM6W7Z2zbSAWiOOHUFT2NfANvZeINS/Z4+MP7Ntr4a1WTx2up+KNUXTpbC5gs9SsLvVpL2KGHUfL+yM11byqqospfJYFQVYD01Nftfjh8ZvA3iv4ZeHdX0zSPAug69BrF1qGjXOk5F9bRxQaWqXkUMkjCVRMfKDIDGPmyQCAfWXw8+Pnwa+K+q3Gh/DXxfp/iW9s7WG9njsJfO8mC4x5byFRhd2eFYhvavYq+bf2RPCg8G/sz/DTw9JpP8AY11aaDYi5tni8mWO5eMNOJF67zISXycls5r6SoAKKKKACql//wAec/8A1zf/ANBNW6qX/wDx5z/9c3/9BNAHzR+xp/ybn4V/3r//ANLZq+oq+Xv2NP8Ak3Pwr/vX/wD6WzV9Q0AFFFFABRRRQB//1/38ooooAKKKD0oA+NNC/wCT+PGP/ZOtC/8ATrqFfZY6V8b+IpLH4eftkaL4v112hsfiR4ZXw5bXD4WBNR0q5lvYoC5P+suIp5Sg6ERN+P2MGX1oAdRSZHrRketAC01hkUuR60ZHrQAzbjp0pNnOeR+NSZHrRketADNpI5FG360/I9aMj1oARRjPvQVzS5HrRketADNnTHWl5x707I9aQsM0AM2jvz/n3oI9P50pKjjIpN69iKNR2DaDgc/nxRs4xjOf89aduXrmnbh60kIZtOf/AK9G09cfrxT8j1oyPWmAzb0PJpduelOyPWjI9aAG7M/5/pSbTjHP50/I9aMj1oAbt/DFPpMj1oyPWgBaKTI9aMj1oAWqd/8A8ec//XN//QTVvcPWvPvil8QPC/ww+H2v+PvF96tlpGiWc1zPK2TwiEhVABLOxwFVQSScAUAeP/sZn/jHPwr/AL1//wCls1fUVfP37LXhfXPB/wAA/BWjeJbRtP1ZrEXd3auQzW014zXDwsw4JjaTaSPSvoGgAooooAKKKKAP/9D9/KKKKACg8jFFFAHC/EH4ceDvin4UvPBXjvTU1PSL3aWjZmR0kjO6OWKRCrxSxsAySIyujAFSCAa+eIP2ZfiRo22y8LfHvxlZ6ZCCsNtdjTL8wx/wIs89mZ3CD5QZHdiPvMTyfsGigD5I/wCGffjT/wBHB+Jv/ADSP/kSj/hn340/9HB+Jv8AwA0j/wCRK+t6KAPkj/hn340/9HB+Jv8AwA0j/wCRKP8Ahn340/8ARwfib/wA0j/5Er63ooA+SP8Ahn340/8ARwfib/wA0j/5Eo/4Z9+NP/Rwfib/AMANI/8AkSvreigD5I/4Z9+NP/Rwfib/AMANI/8AkSj/AIZ9+NP/AEcH4m/8ANI/+RK+t6KAPkj/AIZ9+NP/AEcH4m/8ANI/+RKP+GffjT/0cH4m/wDADSP/AJEr63ooA+SP+GffjT/0cH4m/wDADSP/AJEpD+z98aB1/aD8Tf8AgBpH/wAiV9cU0+lJgfHeofAj4z2FnPqB+P8A4mlFsjSbDY6SA2wZwcWmea8X+EsXxk+MN/dWUfxb17w/9gt4botbw2E/m+cWXY3nWzYC7cgjBJ68cH7Z+IPxK8E+FIbnQvEOqR2V9c2rvHE4bLqwKgg4weeK+Jv2Z/G/hbwJquq3XizUI9OinsLaJGkzgtGzlhwD0BGa/IeKeKo0c/wWHWISh73Or6baXPJxeKUa9Nc1u57qP2fvjRgf8ZB+JvT/AI8dI/8AkSl/4Z9+NP8A0cH4m/8AADSP/kSvqfTNSs9Y0+31XTpPNtbuNZYnwRuRxlTg4PIrQHSv1yFRSSktmetc+Sf+GffjT/0cH4m/8ANI/wDkSj/hn340/wDRwfib/wAANI/+RK+t6KsD5I/4Z9+NP/Rwfib/AMANI/8AkSj/AIZ9+NP/AEcH4m/8ANI/+RK+t6KAPkj/AIZ9+NP/AEcH4m/8ANI/+RKP+GffjT/0cH4m/wDADSP/AJEr63ooA+SP+GffjT/0cH4m/wDADSP/AJEo/wCGffjT/wBHB+Jv/ADSP/kSvreigD5I/wCGffjT/wBHB+Jv/ADSP/kSj/hn340/9HB+Jv8AwA0j/wCRK+t6KAPkc/s+fGnH/Jwfib/wA0j/AORKveH/ANlfSX8Q6f4q+LnjHXfinfaRIk+nw67JbrYWc6Hcs0dlZwwQPKrAFXmWRkIBQqck/VVFADQCOD2p1FFABRRRQAUUUUAf/9H9/KKKKACiiigAozXEfEL4jeC/hZ4UvfGvj3VI9J0exC+ZLJlizuQqRxooLySOxCpGgLMxAAJNfOrftN+P9QSK/wDCfwG8a6vplygeG4lGm6c7qembe9u4p0OOcOin2oA+waK+PP8Aho/4yf8ARuXjH/wM0P8A+T6P+Gj/AIyf9G4+Mf8AwM0T/wCT6APsOivjz/ho/wCMn/RuPjH/AMDNE/8Ak+j/AIaP+Mn/AEbj4x/8DNE/+T6APsOivjz/AIaP+Mn/AEbj4x/8DNE/+T6P+Gj/AIyf9G4+Mf8AwM0T/wCT6APsOivjz/ho/wCMn/RuPjH/AMDNE/8Ak+j/AIaP+Mn/AEbj4x/8DNE/+T6APsOivjz/AIaP+Mn/AEbj4x/8DNE/+T6P+Gj/AIyf9G4+Mf8AwM0T/wCT6APsOmnrXx9/w0f8ZP8Ao3Hxj/4GaJ/8n0n/AA0f8Y/+jcvGP/gZof8A8n0Adl+0p4Ck8UeCjr2nxl9S0DdOoT70luRiaMY68DcB/eUV8SfCPwPJ4+8b2GiDLWKkXN2y9DbREHGf+mrYX3G6vqWX9or4wTRtFJ+zj4wZHGCDeaHgg8Y/4/68o+GPjP4lfDObWZ9O/Z18YyvqlyXjJu9DBitl/wBVCP8AT+iZavxvizwyjmGdYfHL4Pt/Lb79jyMZliqVlP7z9GIY0ijWNFCqgCgDoAOmKmHSvjv/AIaP+Mf/AEbl4x/8DdD/APk+l/4aP+Mf/RuXjH/wM0P/AOT6/Y4xsrLY9c+xKK+PP+Gj/jJ/0bj4x/8AAzRP/k+j/ho/4yf9G4+Mf/AzRP8A5PpgfYdFfHn/AA0f8ZP+jcfGP/gZon/yfR/w0f8AGT/o3Hxj/wCBmif/ACfQB9h0V8ef8NH/ABk/6Nx8Y/8AgZon/wAn0f8ADR/xk/6Nx8Y/+Bmif/J9AH2HRXx5/wANH/GT/o3Hxj/4GaJ/8n0f8NH/ABk/6Nx8Y/8AgZon/wAn0AfYdFfHn/DR/wAZP+jcfGP/AIGaJ/8AJ9H/AA0f8ZP+jcfGP/gZon/yfQB9h0ma+Pf+Gj/jJ/0bl4xH/b5of/yfW14e/ao0Jdf03wr8V/CeufC/U9ZdIbFtdhiNjczyvsjgS/tZJrUTufuRNIrtkYBJxQB9U0U0MCcU6gAooooAKKKKAP/S/fyiiigApD0NLRQB8c+I47D4iftj6N4P12Mz2Pw28Mr4jtYJAGgbUtVupbOKcr/z0t4oJVQ9AJW78j7DCng+1fG+h5P7fHjH/snWhf8Ap11CvssdKAEx70Y96WigBMe9GPelooATHvRj3paQnFABj3ox700OpzjnHWlLY/GgBce9GPek3Y5xxRvFAC496QijdjtTPNTcVyCR2BBP5UAP20bcdKNwo3DvQAYNLj3pCwAz1ozQAuPejHvSFgOtG6gBce9GPek3UbsdqAFx70Y96bvHen0AJj3ox70tFACY96Me9LRQAmPevPPir8PPC/xU+Hmv/D/xnZpf6RrdnNbzRvnjch2upGCrqcMrAgggEGvRKqX/APx5z/8AXN//AEE0AeE/ss+Jtc8XfADwTrPiW8bUdWWxW1u7p1Ctcz2bNbvMQOAZDGWI96+ga+Xv2Nf+TdPCuP71/wD+ls1fUNABRRRQAUUUUAf/0/38ooooAKKKKAPjTQv+T+PGX/ZOtC/9OuoV9ljpXxpoX/J/HjL/ALJ1oX/p11CvssdKACiiigAooooAKa/Ip1IaAPk79m/Uby98d/HuK6uJZks/HTwwrI7Mscf9k6e+xAxIVdzM2BgZJOMk153+0b+1f4s+AHiPU57628J3egaTDFeGwk1yWPxJd2Q2/aZLeyFs0QaMsBGskoV+7rxXUQ/An9oHwn438e+I/hj8R9C0vS/HOsHWXtNR8OzX80ExtYLTaJk1CBSu2BTjyxyTXJfED9kT4g+KU+K+heHfHGm6TonxeY3GqS3GjNeanFObBLNoobg3KJ9mJiRwrRlkUuqMCwdAD0/Vf2krXwnqfxW0/wAX2Mdv/wAK/wBHtvEVgIGd5dR0m6gfy32MBiX7TFJAUUnJ2nOWwPBvE37a3iHRtebwJI/gjQPE2hafYyazB4j1+XS0fVb23jujY6ePIeSZYopU3zMoG51ULndttfGX4cP8WvjX8JvBCveTan4Uijk8Z3Fna3VrpNxpSIl1FbvM4MbtJfW8LRwiR3WMvuIBIb2rxD8CPH2lfEXxR8Qvg74n0zRW8cJDJq9lrOlNqcIv7aFbeG9t2S4gdGEKIrxMTG+1WGxt5YA89tP2p/iH8RtX+H+jfBbwlpl7J4+8I3niZH1jUHt47JrO4ht2ika2jnEiF5goaPP94ZHXD0H4MeGvjD8VvjgfFl7qtrqumaxpsVpeadqt7aPYuNItpc26xyqiqJWLbSuH/jDc19KWfwc1GP40eHvi9fa1HPLonhW88Oy20doIRPLeXVtctcqQ+2MA2+PLCn72dwxg+V69+z38bZPHfj3WvAvxQsvCugfEG7t7i7ij0M3OqW4itIrN/s15Jd+UjskeVZrZghP3SRkgHg+g/tneIfCPw2+GnhnxNq3h+Txnq9lfy6hrfibUf7H0trXSLpbJrktHHIXuLpnVo4lAU4cl1wAe18N/tn+KfHGheFLbwP4f0TWPE+seLrzwffC31eSbSYrm10+TURdW16lvumiaFFbb5YYMShIZSa9Ovv2WZfB3/CBX3wH1u28NXPgTS20IW+q2TapZX+luyyFJkWWCRZxIm9Jlfjc4ZG3Db00nwQ8b6/c/C7W/HPimxvta8A67d61cvYaWbG2vBcWlzaJBFD58hiESXA+dnkLbOQN3AB4Lqf7VHx50Lw38RvFWq+BNBktPg9fNa+IRBq1wXuY0iiu3fT1a3UZW2mjbExUM+UyAu49X+0V+1R4p+B+oPq1vF4Tm8PW+mDVTaahrc1t4gvbeJfMuBZ2KW8iMyrgJ5kqK7nBZetdt4h/Zkudd8F/HXwl/wkEcZ+Mt5NdJK1qzLp4l0+2sdrIJQZseRvyGT723jGTxPjb9knxXr+tfExdA8XWGnaN8W9NtdO1prnSftepwRW1j9gMVlcmdFSF0G9UeN/LkZ2XJbCgHRaz8c/i/4i+K958N/g74Z0S/htPC2meJPtWs6hcWpY6nLcRxW4SCCUc+Qcvn5c/dbpWHpv7TnxH8c6X8N0+H3hLTotc8YXOt6fqdtqt/LHFpl7oLmG7WOSGJzOqyo4T5ULrg/LyK850jwF8eNK/aT1TSfA/iLSNL1DTvht4a068v7zRri6s7m4gur9A9si3cZiMfDmNnlyGAJH3jf1r4NeNPhd4p+Bfgb4Za/E+r2E/iW9vtV1awa7hvLu/jNxeSTRQSQ+V588jMu1wqfdAI+UgG54k/bQ1D4deBNbX4n+H9P0Px7o3iO28MfZTqRXRJbq+thew3Z1CWJHis1tt0srSRB12MqqzFQ2DZfty3TeD/AIn3oj8M+J9X8B+HD4lt5/DertqOl3lurNG8EkhRJYJ0dDkbWUqVZWJ3KvdSfsha5rXhTUdT8V+N/tfxNvfEtv4tt9dg09Y7Kz1Kyt/sdrDHp7yvvtEti0TxySln3swdG2bO48QfBX4pfEH4VeP/AIe/EPxTokk3i7Tzp9pJpmiPbQWSuhWR5Ve6ke4LnDbd6AAYHckA9a+F+r/FHXNMudT+Juj6ZojXDxSWNtp13LeOIHiViLl5IolEgckbUDLgA7jnA9UqnZWptbOC2LBjFGqZAwDtUDP6VcoAKKKKACiiigAqpf8A/HnP/wBc3/8AQTVuql//AMec/wD1zf8A9BNAHzT+xp/ybn4V/wB6/wD/AEtmr6hr5e/Y0/5Nz8K/71//AOls1fUNABRRRQAUUUUAf//U/fyiiigApD0paKAPjPQj/wAZ8eMT6/DrQv8A066hX2ZXyb8cNK8X+A/H+gftFeB9Kn8Q2+j2U+k+JNJsk8y9udIlYTJcWqdZZrOVSwhBy6PJtDOFVrln+2v+ytcQI978TdE0m4IBktNTulsLyBiMmOe2uNksUi9GR1BB4IoA+pqK+ZP+G0P2Tf8Aor/hb/wbW3/xdH/DaH7Jv/RX/C3/AINrb/4ugD6bor5k/wCG0P2Tf+iv+Fv/AAbW3/xdH/DaH7Jv/RX/AAt/4Nrb/wCLoA+m6K+ZP+G0P2Tf+iv+Fv8AwbW3/wAXR/w2h+yb/wBFf8Lf+Da2/wDi6APprHek28YBr5m/4bQ/ZN/6K/4W/wDBtbf/ABdH/DaH7Jv/AEV/wt/4Nrb/AOLoA+mNnvShcV8zf8Nofsm/9Ff8Lf8Ag2tv/i6P+G0P2Tf+iv8Ahb/wbW3/AMXQB9NY96Toa+Zv+G0P2Tf+iv8Ahb/wbW3/AMXSf8Nn/sm/9Ff8Lf8Ag2tv/i6GB9Mn1oHSvmb/AIbO/ZOYhR8XfCxJ4GNWt/8A4qtXU/2rv2bNEWN9b+Jeg6cs2Qhub6OEOV6hd5GcZGcVlKtFSUZSSb2XV+gNrZs+hcc0Y4618yf8Nnfsm/8ARX/C3/g2t/8A4ul/4bP/AGTf+iv+Fv8AwbW3/wAXWoH00VyaTZnua+Z/+G0P2Tf+iv8Ahb/wbW3/AMXR/wANofsm/wDRX/C3/g2tv/i6APprFJtz1NfM3/DaH7Jv/RX/AAt/4Nrb/wCLo/4bQ/ZN/wCiv+Fv/Btbf/F0AfTdFfMn/DaH7Jv/AEV/wt/4Nrb/AOLo/wCG0P2Tf+iv+Fv/AAbW3/xdAH03RXzJ/wANofsm/wDRX/C3/g2tv/i6P+G0P2Tf+iv+Fv8AwbW3/wAXQB9N0V8yf8Nofsm/9Ff8Lf8Ag2tv/i6P+G0P2Tf+iv8Ahb/wbW3/AMXQB9N1Tv8A/jzn/wCub/8AoJr5w/4bQ/ZN/wCiveFv/Btbf/F1wXjz9qrRfHehXXgv9laaD4keNdYR7S1n08mbR9LeRdv2rUb1MRRxxBg/lKxmkAwiNzgA7b9jT/k3TwqP9q+/9LJq+oq84+Enw9svhT8NfDXw4sLmW9i8O2MNobmY5luHjUCSaQ8ZaR8sx9Sa9HoAKKKKACiiigD/1f38ooooAKKKKAG7RWJeeF/Dmoy+fqGl2t1J/elgjdvzIJrdooA5f/hCfBv/AEArD/wFi/8AiaP+EJ8G/wDQCsP/AAFi/wDia6iigDl/+EJ8G/8AQCsP/AWL/wCJo/4Qnwb/ANAKw/8AAWL/AOJrqKKAOX/4Qnwb/wBAKw/8BYv/AImj/hCfBv8A0ArD/wABYv8A4muoooA5f/hCfBv/AEArD/wFi/8AiaP+EJ8G/wDQCsP/AAFi/wDia6iigDl/+EJ8G/8AQCsP/AWL/wCJo/4Qnwb/ANAKw/8AAWL/AOJrqKKAOX/4Qnwb/wBAKw/8BYv/AImmnwT4N/6ANh/4Cxf/ABNdVTDjNFwOC17wb4Ri0W+kj0SxVlt5SCLaLghT/s18W/smaXpmta3rCavZw3qx6daMBPEkmGZ3BI3A8kDk9692+PvxO8YfDs2kOn6fa3OkatDLCZpd4dJwCSp2nGGTLLx/CR3FfF/wr+I+vfDTUriTw5YQ6hc6hDBaLHNvGSrHywu3uzOBX898c8YYShxJg/aOS9lfm0fVaW7nhY7GQjiIX6bn6hDwT4Nx/wAgKw/8BYv/AImnf8IR4N/6AVh/4Cxf/E1p6Q+pPpdq+siMXzRIZxFkRiQjLBcknAPTJrUHSv6Ap1OZKXc929zmP+EJ8G/9AKw/8BYv/iaP+EJ8G/8AQCsP/AWL/wCJrqKK0A5f/hCfBv8A0ArD/wABYv8A4mj/AIQnwb/0ArD/AMBYv/ia6iigDl/+EJ8G/wDQCsP/AAFi/wDiaP8AhCfBv/QCsP8AwFi/+JrqKKAOX/4Qnwb/ANAKw/8AAWL/AOJo/wCEJ8G/9AKw/wDAWL/4muoooA5f/hCfBv8A0ArD/wABYv8A4mj/AIQnwb/0ArD/AMBYv/ia6iigDlj4I8GkY/sGw/8AAWL/AOJras9MsNOi8jT7eO1j/uxIsY/JQKv0UANCgHNOoooAKKKKACiiigD/1v38ooooAKKKQ8DNAC0zevTNfPvxt+LHiXwlf+H/AIcfDPToNY8f+M2nGnxXTMlnZ2lqFN1qF2yAt5MG9FCqN0kjogwCWXhD+z98b9XCX2vftB+JLW/lRTNFpFhpVrYrJj5vIjntLiVUzyA8rsP71AH1/uX1o3L618gf8M1/Fj/o4rxt/wB+NE/+V9H/AAzX8WP+jivG3/fjRP8A5X0AfX+5fWjcvrXyB/wzX8WP+jivG3/fjRP/AJX0f8M1/Fj/AKOK8bf9+NE/+V9AH1/uX1o3L618gf8ADNfxY/6OK8bf9+NE/wDlfR/wzX8WP+jivG3/AH40T/5X0AfX+5fWjcvrXyB/wzX8WP8Ao4rxt/340T/5X0f8M1/Fj/o4rxt/340T/wCV9AH1/uX1o3L618gf8M1/Fj/o4rxt/wB+NE/+V9H/AAzX8WP+jivG3/fjRP8A5X0AfX+5fWmkg96+Qv8Ahmv4sf8ARxXjb/vxon/yvpP+Ga/iv3/aK8bf9+NF/wDlfQB7v8VPBNt8QPBWoeHXIW4dRJbSYz5dxEd0bfmOfUZFfFn7Nfw8k1zxvPr+rW/l2/htyrRsOl9yuw+vlDJ+rA9q9c/4Zr+LGP8Ak4vxt/340X/5X1Qsf2WPiTpxuDY/tB+M4PtUzzy7LfRBvlfG5j/xL+pwK+Bz3gHDY7NMPmNTenuu9vh+5nFXwEalSNR9D7LUgADNPDCvkD/hmz4sf9HFeNv+/Gif/K+l/wCGa/ix/wBHFeNv+/Gif/K+vvrHafX+5fWjcvrXyB/wzX8WP+jivG3/AH40T/5X0f8ADNfxY/6OK8bf9+NE/wDlfQB9f7l9aNy+tfIH/DNfxY/6OK8bf9+NE/8AlfR/wzX8WP8Ao4rxt/340T/5X0AfX+5fWjcvrXyB/wAM1/Fj/o4rxt/340T/AOV9H/DNfxY/6OK8bf8AfjRP/lfQB9f7l9aNy+tfIH/DNfxY/wCjivG3/fjRP/lfR/wzX8WP+jivG3/fjRP/AJX0AfX+5fWjcvrXyB/wzX8WP+jivG3/AH40T/5X0f8ADNfxY/6OK8bf9+NE/wDlfQB9fFhjg0BgTjIr5B/4Zr+LA5/4aK8bf9+NE/8AlfXO+KrP9pD9nXRJfHumeKbv4zeGtKBuNX0nVLW3g1tbNBmWbTZ7GKKKWSNQWFvLHmTnEq4AIB9xUVg+F/E2ieM/Dml+LfDV2l9pOs20V5aTxnKSwToHjdSOzKQa3qACiiigAooooA//1/38ooooAKKKKAPjvS7q4u/27vEllcv5kGm/D3Snt0IB8p7rU7xZmU9RvESBvXaK+wgB1718baF/yfx4y/7J1oX/AKddQr7LHSgAooooAKKKKACiiigAooppJHSgB1FfPvxa/aI8OfBn7Zc+K/DviC50ywhimmv7DTJbu1QSttC748nIbAYAHGR2yRi6h+1D4e0rSrfU9Q8IeJ7eS/v4NNsrWTS3S5vLi4jMqCBGYbgFBLEkYwc9DgA+nKTGa+bW/am+GsXw88YfEO9h1Sxi8BSiDWtOubCWHUbWVhGVH2dwDIGWVSrxlkYZ2sSDWz4H/aH8D+NfGB+HkttqfhvxS1u15Dpus2MtjNc26EB5LdnHlzBMjeI2YpkbgMigD3rHajFRh84PY80bjkZ7/wBKAH4FLUQc445qteXYs7Sa8cFlgR3IXqQgJwM98UAXqK89+F3xG0n4s/Drw38TNAgntdN8T2FvqNvFdKqzpFcIHVZAjOoYA84Yj0Jrvi5FAElFRhiwyDUlABRRRQAUUUUAFFFFAB14NUNSjjksLiORQytFICD0IKkGr9VL/wD485/+ub/+gmgD5p/Y0wP2bvBsCgLFaRXNvCigBUhguZY40UDgBUUKB6CvqGvl79jT/k3Pwr/vX/8A6WzV9Q0AFFFFABRRRQB//9D9/KKKKACiiigD400L/k/jxl/2TrQv/TrqFfZY6V8Z6F/yfz4y/wCydaF/6dL+vswdKACiiigAooooAKKKKACjFFFAHzN+2EpP7OHjVUHJtosAf9d4686/ansbzUovgrYadq8vh+6n8XWgTU4FheWzI066JkQXKvESwBjO5SMOcc4r7A8T+F/DnjTQrzwv4u0y21nSNQTy7i0u4lmgmTOdrxuCrDI6EVieN/hl8PPiXosPhz4heGtO8SaXBIssdrqNrHdQrIgKqwSQMoYAkA9cUAfk38Ub99A+HP7UHw1n8QJ47vdO03Q9YvPEsrQJdSXF5N5a2F2LYJbo0EcCMgRUASQFlB+ZvqP46+JfDvjL4+/A/wAI+Bry31jxb4Zv9Q8RzpaOs7W2lxabPbMZnQnykuJ5Y0UE/vCDjOOPq2w+C/wj0rwPdfDTTPBmj2nhO+3faNKisYUsZdzbm3wKoRstycjk1c8BfCj4ZfCy0uLD4a+FNL8LW92/mTR6ZZw2iyPgDc4iVcnAAyfQelAH5T/BTSPjl8SfBngT4qaPf6ZaeLNU1WyvtQ1q58X6g1zJN9oVdT02XRmgNrH+5WSBbUHET/MNrjcPoT4G+HvB/wAVpfGvxJ+KviPUB4vtfGN/ZyWp1y6so9Ih0u+8rTrWK1jmjSJJrdYpHBT/AEjzCW3K4FfXS/AX4Kx+Ol+J0fgbRV8WrKZxqosYReCZl2GQS7dwcr8pbOSOM4pniH4CfBTxZ4th8eeJvAui6r4jt3ikj1C5sYZblXgOYn8xlJ3RnlDnKnpigD89fF/2PWfhR8d/jP4n8ValpnxF8K6xqsOnLb6tPD/ZD6UR/ZVrb2cbCMi5Xy5HR4nM/m4beoUDv7S1s/jV8Wvi1pnxr1i80+bwbpml2+k6RBqc+lRQWl/pcd1cX4EEkRlke6aSETEkRiPYoU7932prXwQ+D3iPxlbfEPX/AAXpGo+J7MxtDqU9lFJdI0OfLIkZS2U3Hac5GTjqaTx38Dvg78UNTs9Z+I3grR/E1/p6NHbz6jZRXMkaNyVVpFYhSeSOlAH5LfC648d+NLL4N/D22s7LVNH0v4YaJqmn6bfeIr3w1bXd1eNLDezA2MUhunt0SIBCNsHmBurqR7leeDfiGuj/AAB+GvxI8VTzrqvjXWYPtGj6zczO+jR2F/dWdpJfKYpbgrHEkMjyZZsEkl/nr7x1/wCA/wAF/FPhrR/BviPwPo+paH4fCDTbKexieCy2Daot1K4iAHAC4wOK6ew+HHgHS7Tw9Yab4d0+1tvCbF9Iiito0TT2MTQE2ygARExOyfLj5WI6E0Aanhjw1pPg/QrTw5oUTQ2FkpWJHkeZgCSxy8jM7HJJyxJroaKKACiiigAooooAKKKKACql/wD8ec//AFzf/wBBNW6qX/8Ax5z/APXN/wD0E0AfNP7Gn/JufhX/AHr/AP8AS2avqGvl79jT/k3Pwr/vX/8A6WzV9Q0AFFFFABRRRQB//9H9/KKKKACkPSlpD0oA+PLW3Ojft16nfag6xJ4l8AWUFiCfmmk0vUrh7oKD18tbqIn/AHq+xK8O+NHwci+Kun6XqOj6vN4Y8YeF5zeaHrNuqvJZzsux0kib5ZreZfllhbhhggh1Vl8xfxR+21ogTTm8DeDfFDQqqnUItdu9LE7ADc/2R7K4MWTnC+dJgfxUAfX9FfHv/Cffttf9El8Jf+FbP/8AKyj/AIT79tr/AKJL4S/8K2f/AOVlAH2FRXx7/wAJ9+21/wBEl8Jf+FbP/wDKyj/hPv22v+iS+Ev/AArZ/wD5WUAfYVFfHv8Awn37bX/RJfCX/hWz/wDyso/4T79tr/okvhL/AMK2f/5WUAfYVFfHv/Cffttf9El8Jf8AhWz/APyso/4T79tr/okvhL/wrZ//AJWUAfYVFfHv/Cffttf9El8Jf+FbP/8AKyj/AIT79tr/AKJL4S/8K2f/AOVlAH2FSd6+Pv8AhPv22v8AokvhL/wrZ/8A5WUf8J7+21/0SXwl/wCFbP8A/KygD7B6Umc18b3XxE/bUtbeW5n+E3hIRwqXJHiy46AZP/MMrk/DX7Rn7RXj24e1+Hvw98OapJBEs0wudfubMIkhwhXNg+7OGyOMYHrx5eKznDUcRTwtSdqk78q72M5Voxkovdn3ninDpXx7/wAJ7+2z2+EvhL/wrZ//AJWUv/Ce/ttf9El8Jf8AhWz/APysr07GjPsKivj3/hPv22v+iS+Ev/Ctn/8AlZR/wn37bX/RJfCX/hWz/wDyspgfYVFfHv8Awn37bX/RJfCX/hWz/wDyso/4T79tr/okvhL/AMK2f/5WUAfYVFfHv/Cffttf9El8Jf8AhWz/APyso/4T79tr/okvhL/wrZ//AJWUAfYVFfHv/Cffttf9El8Jf+FbP/8AKyj/AIT79tr/AKJL4S/8K2f/AOVlAH2FRXx7/wAJ9+21/wBEl8Jf+FbP/wDKyj/hPv22v+iS+Ev/AArZ/wD5WUAfYVZetXVvY6Te3t3IIoLeCWSR2OFVEQlifYAZr5RPj79tn/okvhL/AMK2f/5WVjeI/hj+0P8AtC6b/wAIj8bLrSvAXge5O3VdI8O3cuoXur2+PmtptQmht/s9vICVlWGPzWGNsygkUAd3+xmjf8M1eB7wf6nUrWW+gJBG+3vJ5LiF8NgjdG6nB5Ga+oKo2Fna6daQafYxLBbWyLFFGgwqIgwqgdgBxV6gAooooAKKKKAP/9L9/KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigApp606mNQwsYviL/kBah/17y/+gmvhj9jn/kOaz/2DLP/ANDkr3D45/FjXvhy9vYx6LFfadq8Esa3DTtGVmUHchUIw+6dw55Abpivi/4R/E29+FuoXdxp2lrqst7BBbLGZDESY2O0LhWyWLhQMDnv1r+fON+LMFS4kwTqSa9lzc2j0utPW/keDjsZCOIhfofrABwKeOlZejzahcaXaT6rClveSxI00aMXVHIyVDEAkDpnAz6VqA5Ffv8ASqKSUl11PeFooorQAooooAKKKKACiiigAooooATApcCiigAooooAKKKKACiiigD/0/38ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACmsKdTTxQB5f8AF3wLF8QPA9/oaYF4q+daOf4LiPlD9D90+oJFfFH7OHw+k8S+Om1nUYCtl4dbzHRh/wAvZyqRH3j+Zj77a/SQgH8KxdG8PaRoH219Ktltzf3D3U+0ffmkxuY/XFfnvEHh/hsfmmHzGa1huu/8v3Hn4jL41Ksar6G4BwB6U4dKaBTxxX6CegFFFFMAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAP/1P38ooooAKKKKACiiigAooooAKKKKAOS8aeNvDngHRW17xPdNbW29YkWOKS4mmlYErFDBCryyyMAdqRqzHHArxDTP2mtCN5bnxl4Q8T+C9J1Dmy1TWNLkis5FIzm4aIyPYk9herDzxw3Fes/FrxBo/hP4XeLfFHiCRotN0jSr26uHWR4mWKGF2Yq8ZDqcDgqQwPQ5r8qP2Lf2qLH4X/BX4d6Z8WP+Em8R3XxB12bTpfEt5m4sYdTnZhFZ+ZcTedIEVNpeGN4gcruyGCgH7KwsroHRgysAQRzkHvUtMXA/lQxGPWgB9JkV8VfGn9pPxx8M/2gfBnwx0PwJrHifSdY0jU9QuRpdtby3V1LbtCka2r3F3BGFt95a534PzxeWW+cDk9c+PnizwD+058RdLPhrxR410i28NeHLyHStGiiuBYvLLf/AGmZknnhjRnVEBCsWcpgA7cgA/QKjiuE+GnxG8I/FjwZp3jzwNe/btH1NWMblGjkR42KSxSxtho5I3Uo6MAysCCMio/ib8SvCPwk8H33jvxxeGz0qw2KxRGlllllcRxQxRIC8ksjsFRFBLEgAUAd/kUmR618qWv7U1vb+CvGPjnxj8NvF/g+y8GaPLrcyatZW0bXdrErOVtnhupYTNhTmJ5EYZBOAc0ab+1n4HuvBer/ABN17QNe8M+DdNtrO5tNV1SyWCPVTfHbFFY26yNdSSlyECNEhZiNgYHNAH1ZmkyK8Q+FnxkvviVfXlhqHw+8T+CTDCtxFJrtpBFFcRMduY3t551D9ykhV8c7cV7De3dvYWc9/ev5dvbxvLIx5Cog3MfwA6UAXsj1oyK+W/hr+1BY/FbTrrW/DXgDxTBo7adNqelahdWdulrrFvH937IyXDsryjBRJ1hYqegIIHM/s3ftKeJ/ip8K7rx1418Ea5pUtjb3F60xsI0hu40nlUW9pDHPLM08SoFkR1Ulvu55wAfZeRSZHTNfMvw+/aa0vxv4nfwRrfgjxN4J8SSafPqtjp+u2cMMl/aW5RZGt3t554t6mRAY3dHGehAJHnv7Mv7T/i74ueFvEWueOPBOr6Ouj3WtOL1raCGxMFjdSRJZj/SZJTeRIm2cMoTzA+xyuKAPtzI6UtfPD/tH+DI/hL4D+MRsNQ/sj4hXGh2thAI4vtMT+IJY4rbzl80IAjSDzNrtgZ27+Ac3wd+0xoXj74gXHg7wt4Q8RXukW2oXelN4kW0i/sX7dY7vPi8zzvPGxlZN7QhCw27skZAPpmiiigAooooAKKKKACiiigAooooAKKKKAP/V/fyiiigAooooAKKKKACiiigAooooA+P/ANu7Qfib4w/Zj8WeBPhFo0ut+JPFIt9MjhjKjbbzzL9pdmdkVVEIcZJ6kcHpXy7bfA/xz8YNV/Z/+H0Xgq78G/Dv4Px2uq6pJqsUUE9xqttCEitrWOKR8+XLvaR8bCSpRmANfrCRkUiqAc+2KAKl1JNb2ss0MJmkRWZY1IUuwBIUFsAEnjJOPWvD/wBnH41yfHz4dN47l8O3HhiWLUb/AE2SzuZI5mEmnzvA5WSIlGG9SCVJG4EAkDJ9v1PTrTV9PudL1CMTW13G8MqEkBkkUqwyOeQcVQ8M+GtA8HaBYeFvC2nQaTpOlwpBa2tsgjhhiQYVEUcAAUAfKfx50rxp4d+PPwu+NGg+Fr/xbo3h/T9f0nUbfS/Le8hbVBavBMscrxho827K2GyCy8EZI4y41/x/8P8A9o/xv8To/hj4i8Q6R4p8MeHbe2/s5LRnjvrJ72WS2lWW4j2vi4QbxmMHOWHGfvoqD1pu3pntQB8l/svaJP8AB/4UR6V8Ubqy8O+IfEOqavr8+my3kO6yGrX0t0luW3BWaJZAjlMrvB2kjBqP9pzSL/4peBtIuvhRPZ+KNf8ABOu6Z4kj0iG8hBv49PkPmW+7cVVmRyY9+FMgUEjqPonxB8O/Afiy7jv/ABR4c07V7mJPLSW7tYp3VM52hnUkDPajw/8ADzwN4SupL3wr4e0/SLiZPLeS0tY4HZCQ20sgBIyAcHuAaAPlD4q+LfiB8dfgJ8U/Auj/AAv8RaDfan4T1CO0/tRbSP7Rf3MTxiziWOeQmRSeXOIz2Y1q/H/4ZePPF/7P3hW18GaWt/4j8HX3hzXV0qWRYPtraLNDcS2gdvkWRxGypuO3dgEgcj7K25znvS4PTtQB4J4I+Nd/4nvpB4n8Ca14D06K1SZ7/X2s7aD7Sz7TaLsuJGaQDJ3AbCBwxNejTeOPBtzE9va6xp+oSyKypbx3cLPMxBxGq7+S3QCtrXfDeg+J7E6Z4k0221WzLK/k3USzR7kPyttcEZHb0rkrT4PfCuxuoL6y8HaPb3FuyvHJHYwK6OvRlYLkEdsUAfE/7P3hXx5oHxngtvh94M8TfDv4WXui3z6xoeuS2smmWertLGLVdKSOaaSL5TKZFiIt8bSBvzVXwhc/tE+Gv2d/GvwY8GeBdW8P/EHQrTX20nVpPsj6bdSm7MlqbWVpifNuIZS0YkjCo6MJCPl3fpSFxz3pCo9OKAPy6+Gvw/1zTv2iPhR450D4feMdN0DTNI1bStW1HxHfG+uze6jFBKkkyy3c7BEeFo5JYxtZ2XAKLuX1b4A6P488H6L40+BHiXwZqlnJe6x4pvbbXAsDaTLbapdS3dswkEhkDMswTaY+GVs8YJ+8NtG3PagD8lU0f42aj8DPgl8Ax8KNet9R8Ca34SXWdTkezWwhh0K9gMk8LC4MsySJGZF2plV+8FbivS7HQPHNl+0jpuvfCL4feJ/A0ep+Ibo+LnuZrT/hHNS0+OJlF+IVnlP2idgnlvEiS/LiXCAA/o/t70bcHpQA+iiigAooooAKKKKACiiigAooooAKKKKAP//W/fyiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//Z"
    }
   },
   "cell_type": "markdown",
   "id": "ebd40350",
   "metadata": {},
   "source": [
    "![Picture 2.jpg](attachment:f7ad545c-20f0-47d6-8f02-6473dce4f964.jpg)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "a01b5609",
   "metadata": {},
   "source": [
    "If the ``input_domain`` equals “time”, the inputs $\\mathbf{y}$\n",
    " are first transformed to resource grids with the [OFDMDemodulator](https://nvlabs.github.io/sionna/phy/api/ofdm.html#sionna.ofdm.OFDMModulator). Then channel estimation is performed, e.g., with the help of the [PUSCHLSChannelEstimator](https://nvlabs.github.io/sionna/phy/api/nr.html#sionna.nr.PUSCHLSChannelEstimator). If ``channel_estimator`` is chosen to be “perfect”, this step is skipped and the input $\\mathbf{h}$ is used instead. Next, MIMO detection is carried out with an arbitrary [OFDMDetector](https://nvlabs.github.io/sionna/phy/api/ofdm.html#sionna.ofdm.OFDMDetector). The resulting LLRs for each layer are then combined to transport blocks with the help of the [LayerDemapper](https://nvlabs.github.io/sionna/phy/api/nr.html#sionna.nr.LayerDemapper). Finally, the transport blocks are decoded with the [TBDecoder](https://nvlabs.github.io/sionna/phy/api/nr.html#sionna.nr.TBDecoder).\n",
    " \n",
    "If we instantiate a ``PUSCHReceiver`` as done in the next cell, default implementations of all blocks as described in the [API documentation](https://nvlabs.github.io/sionna/phy/api/nr.html#sionna.nr.PUSCHReceiver) are used.  \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "0e2c8f36",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-03-08T23:46:27.598298Z",
     "iopub.status.busy": "2025-03-08T23:46:27.597988Z",
     "iopub.status.idle": "2025-03-08T23:46:27.673407Z",
     "shell.execute_reply": "2025-03-08T23:46:27.672338Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<sionna.phy.ofdm.detection.LinearDetector at 0x7fe093aff3d0>"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pusch_receiver = PUSCHReceiver(pusch_transmitter)\n",
    "pusch_receiver._mimo_detector"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "48501379",
   "metadata": {},
   "source": [
    "We can also provide custom implementations for each block by providing them as keyword arguments during initialization.\n",
    "In the folllwing code snippet, we first create an instance of the [KBestDetector](https://nvlabs.github.io/sionna/phy/api/ofdm.html#sionna.ofdm.KBestDetector), which is then used as MIMO detector in the ``PUSCHReceiver``."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "66c43c7a",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-03-08T23:46:27.678489Z",
     "iopub.status.busy": "2025-03-08T23:46:27.677952Z",
     "iopub.status.idle": "2025-03-08T23:46:28.052177Z",
     "shell.execute_reply": "2025-03-08T23:46:28.050711Z"
    }
   },
   "outputs": [],
   "source": [
    "# Create a new PUSCHTransmitter\n",
    "pusch_transmitter = PUSCHTransmitter([pusch_config, pusch_config_1])\n",
    "\n",
    "# Create a StreamManagement instance\n",
    "rx_tx_association = np.ones([1, pusch_transmitter.resource_grid.num_tx], bool)\n",
    "stream_management = StreamManagement(rx_tx_association,\n",
    "                                     pusch_config.num_layers)\n",
    "\n",
    "# Get relevant parameters for the detector\n",
    "num_streams = pusch_transmitter.resource_grid.num_tx \\\n",
    "              * pusch_transmitter.resource_grid.num_streams_per_tx\n",
    "\n",
    "k = 32 # Number of canditates for K-Best detection\n",
    "\n",
    "k_best = KBestDetector(\"bit\", num_streams, k,\n",
    "                       pusch_transmitter.resource_grid,\n",
    "                       stream_management,\n",
    "                       \"qam\", pusch_config.tb.num_bits_per_symbol)\n",
    "\n",
    "# Create a PUSCHReceiver using the KBest detector\n",
    "pusch_receiver = PUSCHReceiver(pusch_transmitter, mimo_detector=k_best)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5decf6b8",
   "metadata": {},
   "source": [
    "Next, we test if this receiver works over a simple Rayleigh block fading channel:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "0ec8ce0c",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-03-08T23:46:28.057302Z",
     "iopub.status.busy": "2025-03-08T23:46:28.056710Z",
     "iopub.status.idle": "2025-03-08T23:46:30.126109Z",
     "shell.execute_reply": "2025-03-08T23:46:30.124459Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BER: 0.0\n"
     ]
    }
   ],
   "source": [
    "num_rx_ant = 16\n",
    "rayleigh = RayleighBlockFading(num_rx=1,\n",
    "                               num_rx_ant=num_rx_ant,\n",
    "                               num_tx=pusch_transmitter.resource_grid.num_tx,\n",
    "                               num_tx_ant=pusch_config.num_antenna_ports)\n",
    "\n",
    "channel = OFDMChannel(rayleigh,\n",
    "                      pusch_transmitter.resource_grid,\n",
    "                      add_awgn=True,\n",
    "                      normalize_channel=True)\n",
    "\n",
    "x, b = pusch_transmitter(32)\n",
    "no = 0.1\n",
    "y = channel(x, no)\n",
    "b_hat = pusch_receiver(y, no)\n",
    "print(\"BER:\", compute_ber(b, b_hat).numpy())"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "86bebb7b",
   "metadata": {},
   "source": [
    "## End-to-end PUSCH Simulations\n",
    "\n",
    "We will now implement an end-to-end model that is capable of running PUSCH simulations for many different configurations.\n",
    "You can use it as a boilerplate template for your own experiments."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "eb2425de",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-03-08T23:46:30.131403Z",
     "iopub.status.busy": "2025-03-08T23:46:30.130887Z",
     "iopub.status.idle": "2025-03-08T23:46:30.155096Z",
     "shell.execute_reply": "2025-03-08T23:46:30.154173Z"
    }
   },
   "outputs": [],
   "source": [
    "class Model(Block):\n",
    "    \"\"\"Simulate PUSCH transmissions over a 3GPP 38.901 model\n",
    "\n",
    "    This model runs BER simulations for a multiuser MIMO uplink channel\n",
    "    compliant with the 5G NR PUSCH specifications.\n",
    "    You can pick different scenarios, i.e., channel models, perfect or\n",
    "    estimated CSI, as well as different MIMO detectors (LMMSE or KBest).\n",
    "    You can chosse to run simulations in either time (\"time\") or frequency (\"freq\")\n",
    "    domains and configure different user speeds.\n",
    "\n",
    "    Parameters\n",
    "    ----------\n",
    "    scenario : str, one of [\"umi\", \"uma\", \"rma\"]\n",
    "        3GPP 38.901 channel model to be used\n",
    "\n",
    "    perfect_csi : bool\n",
    "        Determines if perfect CSI is assumed or if the CSI is estimated\n",
    "\n",
    "    domain :  str, one of [\"freq\", \"time\"]\n",
    "        Domain in which the simulations are carried out.\n",
    "        Time domain modelling is typically more complex but allows modelling\n",
    "        of realistic effects such as inter-symbol interference of subcarrier\n",
    "        interference due to very high speeds.\n",
    "\n",
    "    detector : str, one of [\"lmmse\", \"kbest\"]\n",
    "        MIMO detector to be used. Note that each detector has additional\n",
    "        parameters that can be configured in the source code of the _init_ call.\n",
    "\n",
    "    speed: float\n",
    "        User speed (m/s)\n",
    "\n",
    "    Input\n",
    "    -----\n",
    "    batch_size : int\n",
    "        Number of simultaneously simulated slots\n",
    "\n",
    "    ebno_db : float\n",
    "        Signal-to-noise-ratio\n",
    "\n",
    "    Output\n",
    "    ------\n",
    "    b : [batch_size, num_tx, tb_size], tf.float\n",
    "        Transmitted information bits\n",
    "\n",
    "    b_hat : [batch_size, num_tx, tb_size], tf.float\n",
    "        Decoded information bits\n",
    "    \"\"\"\n",
    "    def __init__(self,\n",
    "                 scenario,    # \"umi\", \"uma\", \"rma\"\n",
    "                 perfect_csi, # bool\n",
    "                 domain,      # \"freq\", \"time\"\n",
    "                 detector,    # \"lmmse\", \"kbest\"\n",
    "                 speed        # float\n",
    "                ):\n",
    "        super().__init__()\n",
    "        self._scenario = scenario\n",
    "        self._perfect_csi = perfect_csi\n",
    "        self._domain = domain\n",
    "        self._speed = speed\n",
    "\n",
    "        self._carrier_frequency = 3.5e9\n",
    "        self._subcarrier_spacing = 30e3\n",
    "        self._num_tx = 4\n",
    "        self._num_tx_ant = 4\n",
    "        self._num_layers = 2\n",
    "        self._num_rx_ant = 16\n",
    "        self._mcs_index = 14\n",
    "        self._mcs_table = 1\n",
    "        self._num_prb = 16\n",
    "\n",
    "        # Create PUSCHConfigs\n",
    "\n",
    "        # PUSCHConfig for the first transmitter\n",
    "        pusch_config = PUSCHConfig()\n",
    "        pusch_config.carrier.subcarrier_spacing = self._subcarrier_spacing/1000\n",
    "        pusch_config.carrier.n_size_grid = self._num_prb\n",
    "        pusch_config.num_antenna_ports = self._num_tx_ant\n",
    "        pusch_config.num_layers = self._num_layers\n",
    "        pusch_config.precoding = \"codebook\"\n",
    "        pusch_config.tpmi = 1\n",
    "        pusch_config.dmrs.dmrs_port_set = list(range(self._num_layers))\n",
    "        pusch_config.dmrs.config_type = 2\n",
    "        pusch_config.dmrs.length = 2\n",
    "        pusch_config.dmrs.additional_position = 1\n",
    "        pusch_config.dmrs.num_cdm_groups_without_data = 3\n",
    "        pusch_config.tb.mcs_index = self._mcs_index\n",
    "        pusch_config.tb.mcs_table = self._mcs_table\n",
    "\n",
    "        # Create PUSCHConfigs for the other transmitters by cloning of the first PUSCHConfig\n",
    "        # and modifying the used DMRS ports.\n",
    "        pusch_configs = [pusch_config]\n",
    "        for i in range(1, self._num_tx):\n",
    "            pc = pusch_config.clone()\n",
    "            pc.dmrs.dmrs_port_set = list(range(i*self._num_layers, (i+1)*self._num_layers))\n",
    "            pusch_configs.append(pc)\n",
    "\n",
    "        # Create PUSCHTransmitter\n",
    "        self._pusch_transmitter = PUSCHTransmitter(pusch_configs, output_domain=self._domain)\n",
    "\n",
    "        # Create PUSCHReceiver\n",
    "        self._l_min, self._l_max = time_lag_discrete_time_channel(self._pusch_transmitter.resource_grid.bandwidth)\n",
    "\n",
    "\n",
    "        rx_tx_association = np.ones([1, self._num_tx], bool)\n",
    "        stream_management = StreamManagement(rx_tx_association,\n",
    "                                             self._num_layers)\n",
    "\n",
    "        assert detector in[\"lmmse\", \"kbest\"], \"Unsupported MIMO detector\"\n",
    "        if detector==\"lmmse\":\n",
    "            detector = LinearDetector(equalizer=\"lmmse\",\n",
    "                                      output=\"bit\",\n",
    "                                      demapping_method=\"maxlog\",\n",
    "                                      resource_grid=self._pusch_transmitter.resource_grid,\n",
    "                                      stream_management=stream_management,\n",
    "                                      constellation_type=\"qam\",\n",
    "                                      num_bits_per_symbol=pusch_config.tb.num_bits_per_symbol)\n",
    "        elif detector==\"kbest\":\n",
    "            detector = KBestDetector(output=\"bit\",\n",
    "                                     num_streams=self._num_tx*self._num_layers,\n",
    "                                     k=64,\n",
    "                                     resource_grid=self._pusch_transmitter.resource_grid,\n",
    "                                     stream_management=stream_management,\n",
    "                                     constellation_type=\"qam\",\n",
    "                                     num_bits_per_symbol=pusch_config.tb.num_bits_per_symbol)\n",
    "\n",
    "        if self._perfect_csi:\n",
    "            self._pusch_receiver = PUSCHReceiver(self._pusch_transmitter,\n",
    "                                                 mimo_detector=detector,\n",
    "                                                 input_domain=self._domain,\n",
    "                                                 channel_estimator=\"perfect\",\n",
    "                                                 l_min = self._l_min)\n",
    "        else:\n",
    "            self._pusch_receiver = PUSCHReceiver(self._pusch_transmitter,\n",
    "                                                 mimo_detector=detector,\n",
    "                                                 input_domain=self._domain,\n",
    "                                                 l_min = self._l_min)\n",
    "\n",
    "        # Configure antenna arrays\n",
    "        self._ut_array = AntennaArray(\n",
    "                                 num_rows=1,\n",
    "                                 num_cols=int(self._num_tx_ant/2),\n",
    "                                 polarization=\"dual\",\n",
    "                                 polarization_type=\"cross\",\n",
    "                                 antenna_pattern=\"omni\",\n",
    "                                 carrier_frequency=self._carrier_frequency)\n",
    "\n",
    "        self._bs_array = AntennaArray(num_rows=1,\n",
    "                                      num_cols=int(self._num_rx_ant/2),\n",
    "                                      polarization=\"dual\",\n",
    "                                      polarization_type=\"cross\",\n",
    "                                      antenna_pattern=\"38.901\",\n",
    "                                      carrier_frequency=self._carrier_frequency)\n",
    "\n",
    "        # Configure the channel model\n",
    "        if self._scenario == \"umi\":\n",
    "            self._channel_model = UMi(carrier_frequency=self._carrier_frequency,\n",
    "                                      o2i_model=\"low\",\n",
    "                                      ut_array=self._ut_array,\n",
    "                                      bs_array=self._bs_array,\n",
    "                                      direction=\"uplink\",\n",
    "                                      enable_pathloss=False,\n",
    "                                      enable_shadow_fading=False)\n",
    "        elif self._scenario == \"uma\":\n",
    "            self._channel_model = UMa(carrier_frequency=self._carrier_frequency,\n",
    "                                      o2i_model=\"low\",\n",
    "                                      ut_array=self._ut_array,\n",
    "                                      bs_array=self._bs_array,\n",
    "                                      direction=\"uplink\",\n",
    "                                      enable_pathloss=False,\n",
    "                                      enable_shadow_fading=False)\n",
    "        elif self._scenario == \"rma\":\n",
    "            self._channel_model = RMa(carrier_frequency=self._carrier_frequency,\n",
    "                                      ut_array=self._ut_array,\n",
    "                                      bs_array=self._bs_array,\n",
    "                                      direction=\"uplink\",\n",
    "                                      enable_pathloss=False,\n",
    "                                      enable_shadow_fading=False)\n",
    "\n",
    "        # Configure the actual channel\n",
    "        if domain==\"freq\":\n",
    "            self._channel = OFDMChannel(\n",
    "                                self._channel_model,\n",
    "                                self._pusch_transmitter.resource_grid,\n",
    "                                normalize_channel=True,\n",
    "                                return_channel=True)\n",
    "        else:\n",
    "            self._channel = TimeChannel(\n",
    "                                self._channel_model,\n",
    "                                self._pusch_transmitter.resource_grid.bandwidth,\n",
    "                                self._pusch_transmitter.resource_grid.num_time_samples,\n",
    "                                l_min=self._l_min,\n",
    "                                l_max=self._l_max,\n",
    "                                normalize_channel=True,\n",
    "                                return_channel=True)\n",
    "\n",
    "    def new_topology(self, batch_size):\n",
    "        \"\"\"Set new topology\"\"\"\n",
    "        topology = gen_topology(batch_size,\n",
    "                                self._num_tx,\n",
    "                                self._scenario,\n",
    "                                min_ut_velocity=self._speed,\n",
    "                                max_ut_velocity=self._speed)\n",
    "\n",
    "        self._channel_model.set_topology(*topology)\n",
    "\n",
    "    @tf.function(jit_compile=True)\n",
    "    def call(self, batch_size, ebno_db):\n",
    "        self.new_topology(batch_size)\n",
    "        x, b = self._pusch_transmitter(batch_size)\n",
    "\n",
    "        no = ebnodb2no(ebno_db,\n",
    "                       self._pusch_transmitter._num_bits_per_symbol,\n",
    "                       self._pusch_transmitter._target_coderate,\n",
    "                       self._pusch_transmitter.resource_grid)\n",
    "        y, h = self._channel(x, no)\n",
    "        if self._perfect_csi:\n",
    "            b_hat = self._pusch_receiver(y, no, h)\n",
    "        else:\n",
    "            b_hat = self._pusch_receiver(y, no)\n",
    "        return b, b_hat"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d18f8840",
   "metadata": {},
   "source": [
    "We will now compare the PUSCH BLER performance over the 3GPP 38.901 UMi channel model with different detectors and either perfect or imperfect CSI.\n",
    "Note that these simulations might take some time depending or you available hardware. You can reduce the `batch_size` if the model does not fit into the memory of your GPU. Running the simulations in the time domain will significantly increase the complexity and you might need to decrease the `batch_size` further. The code will also run on CPU if not GPU is available. \n",
    "\n",
    "If you do not want to run the simulation yourself, you can skip the next cell and visualize the results in the next cell."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "ddbb4e6b",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-03-08T23:46:30.159139Z",
     "iopub.status.busy": "2025-03-08T23:46:30.158911Z",
     "iopub.status.idle": "2025-03-09T00:53:26.121316Z",
     "shell.execute_reply": "2025-03-09T00:53:26.120536Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "EbNo [dB] |        BER |       BLER |  bit errors |    num bits | block errors |  num blocks | runtime [s] |    status\n",
      "---------------------------------------------------------------------------------------------------------------------------------------\n",
      "     -2.0 | 1.3466e-01 | 9.9805e-01 |      564787 |     4194304 |          511 |         512 |        87.6 |reached target block errors\n",
      "     -1.0 | 8.9700e-02 | 9.0039e-01 |      376227 |     4194304 |          461 |         512 |         0.6 |reached target block errors\n",
      "      0.0 | 3.9218e-02 | 5.5859e-01 |      164491 |     4194304 |          286 |         512 |         0.6 |reached target block errors\n",
      "      1.0 | 1.4951e-02 | 2.2852e-01 |      125421 |     8388608 |          234 |        1024 |         1.3 |reached target block errors\n",
      "      2.0 | 3.6776e-03 | 7.0312e-02 |       92549 |    25165824 |          216 |        3072 |         3.8 |reached target block errors\n",
      "      3.0 | 1.0105e-03 | 1.6406e-02 |      105957 |   104857600 |          210 |       12800 |        15.9 |reached target block errors\n",
      "      4.0 | 3.9842e-04 | 5.6895e-03 |      115305 |   289406976 |          201 |       35328 |        44.2 |reached target block errors\n",
      "      5.0 | 1.3916e-04 | 1.4648e-03 |      156424 |  1124073472 |          201 |      137216 |       172.7 |reached target block errors\n",
      "      6.0 | 6.0490e-05 | 6.4252e-04 |      155020 |  2562719744 |          201 |      312832 |       393.4 |reached target block errors\n",
      "      7.0 | 3.4334e-05 | 2.7734e-04 |      144006 |  4194304000 |          142 |      512000 |       643.9 |reached max iterations\n",
      "      8.0 | 1.4893e-05 | 1.2695e-04 |       62464 |  4194304000 |           65 |      512000 |       643.9 |reached max iterations\n",
      "      9.0 | 3.6426e-06 | 4.6875e-05 |       15278 |  4194304000 |           24 |      512000 |       643.9 |reached max iterations\n",
      "     10.0 | 4.4279e-06 | 3.5156e-05 |       18572 |  4194304000 |           18 |      512000 |       643.6 |reached max iterations\n",
      "EbNo [dB] |        BER |       BLER |  bit errors |    num bits | block errors |  num blocks | runtime [s] |    status\n",
      "---------------------------------------------------------------------------------------------------------------------------------------\n",
      "     -2.0 | 6.4714e-02 | 7.8906e-01 |      271431 |     4194304 |          404 |         512 |        70.1 |reached target block errors\n",
      "     -1.0 | 3.8772e-02 | 5.3516e-01 |      162623 |     4194304 |          274 |         512 |         0.2 |reached target block errors\n",
      "      0.0 | 1.7843e-02 | 2.6660e-01 |      149676 |     8388608 |          273 |        1024 |         0.4 |reached target block errors\n",
      "      1.0 | 8.1903e-03 | 1.2354e-01 |      137411 |    16777216 |          253 |        2048 |         0.7 |reached target block errors\n",
      "      2.0 | 4.2996e-03 | 6.0547e-02 |      126237 |    29360128 |          217 |        3584 |         1.2 |reached target block errors\n",
      "      3.0 | 2.0209e-03 | 3.0048e-02 |      110190 |    54525952 |          200 |        6656 |         2.3 |reached target block errors\n",
      "      4.0 | 1.1430e-03 | 1.8643e-02 |      105469 |    92274688 |          210 |       11264 |         3.9 |reached target block errors\n",
      "      5.0 | 6.0009e-04 | 8.8108e-03 |      113263 |   188743680 |          203 |       23040 |         7.9 |reached target block errors\n",
      "      6.0 | 3.5593e-04 | 4.3403e-03 |      134358 |   377487360 |          200 |       46080 |        15.8 |reached target block errors\n",
      "      7.0 | 1.9281e-04 | 2.2844e-03 |      138288 |   717225984 |          200 |       87552 |        30.2 |reached target block errors\n",
      "      8.0 | 1.0506e-04 | 1.3287e-03 |      129551 |  1233125376 |          200 |      150528 |        52.1 |reached target block errors\n",
      "      9.0 | 6.0413e-05 | 7.5703e-04 |      130750 |  2164260864 |          200 |      264192 |        91.5 |reached target block errors\n",
      "     10.0 | 3.0928e-05 | 4.0775e-04 |      124275 |  4018143232 |          200 |      490496 |       169.8 |reached target block errors\n",
      "EbNo [dB] |        BER |       BLER |  bit errors |    num bits | block errors |  num blocks | runtime [s] |    status\n",
      "---------------------------------------------------------------------------------------------------------------------------------------\n",
      "     -2.0 | 1.8094e-01 | 1.0000e+00 |      758931 |     4194304 |          512 |         512 |        77.9 |reached target block errors\n",
      "     -1.0 | 1.5947e-01 | 1.0000e+00 |      668853 |     4194304 |          512 |         512 |         0.6 |reached target block errors\n",
      "      0.0 | 1.3204e-01 | 9.7461e-01 |      553831 |     4194304 |          499 |         512 |         0.6 |reached target block errors\n",
      "      1.0 | 8.8668e-02 | 8.6914e-01 |      371901 |     4194304 |          445 |         512 |         0.6 |reached target block errors\n",
      "      2.0 | 4.5004e-02 | 5.9766e-01 |      188761 |     4194304 |          306 |         512 |         0.6 |reached target block errors\n",
      "      3.0 | 1.7913e-02 | 2.6074e-01 |      150265 |     8388608 |          267 |        1024 |         1.2 |reached target block errors\n",
      "      4.0 | 9.3111e-03 | 1.2402e-01 |      156214 |    16777216 |          254 |        2048 |         2.5 |reached target block errors\n",
      "      5.0 | 3.4483e-03 | 3.9595e-02 |      159096 |    46137344 |          223 |        5632 |         6.9 |reached target block errors\n",
      "      6.0 | 2.9543e-03 | 2.5024e-02 |      198262 |    67108864 |          205 |        8192 |        10.0 |reached target block errors\n",
      "      7.0 | 1.9047e-03 | 1.5781e-02 |      199725 |   104857600 |          202 |       12800 |        15.8 |reached target block errors\n",
      "      8.0 | 1.9102e-03 | 1.4300e-02 |      224334 |   117440512 |          205 |       14336 |        17.8 |reached target block errors\n",
      "      9.0 | 1.7706e-03 | 1.2207e-02 |      237650 |   134217728 |          200 |       16384 |        20.3 |reached target block errors\n",
      "     10.0 | 1.4224e-03 | 1.0066e-02 |      232681 |   163577856 |          201 |       19968 |        24.8 |reached target block errors\n",
      "EbNo [dB] |        BER |       BLER |  bit errors |    num bits | block errors |  num blocks | runtime [s] |    status\n",
      "---------------------------------------------------------------------------------------------------------------------------------------\n",
      "     -2.0 | 1.3727e-01 | 9.9023e-01 |      575758 |     4194304 |          507 |         512 |        70.0 |reached target block errors\n",
      "     -1.0 | 1.0565e-01 | 9.2969e-01 |      443117 |     4194304 |          476 |         512 |         0.2 |reached target block errors\n",
      "      0.0 | 7.2086e-02 | 8.1250e-01 |      302350 |     4194304 |          416 |         512 |         0.2 |reached target block errors\n",
      "      1.0 | 4.5447e-02 | 5.1758e-01 |      190620 |     4194304 |          265 |         512 |         0.2 |reached target block errors\n",
      "      2.0 | 2.1693e-02 | 3.0371e-01 |      181975 |     8388608 |          311 |        1024 |         0.3 |reached target block errors\n",
      "      3.0 | 1.2961e-02 | 1.7839e-01 |      163082 |    12582912 |          274 |        1536 |         0.5 |reached target block errors\n",
      "      4.0 | 6.6581e-03 | 8.8281e-02 |      139630 |    20971520 |          226 |        2560 |         0.8 |reached target block errors\n",
      "      5.0 | 4.8908e-03 | 5.3467e-02 |      164109 |    33554432 |          219 |        4096 |         1.4 |reached target block errors\n",
      "      6.0 | 3.6210e-03 | 3.7642e-02 |      167062 |    46137344 |          212 |        5632 |         1.9 |reached target block errors\n",
      "      7.0 | 3.1038e-03 | 2.9157e-02 |      182254 |    58720256 |          209 |        7168 |         2.4 |reached target block errors\n",
      "      8.0 | 2.1240e-03 | 1.8377e-02 |      195990 |    92274688 |          207 |       11264 |         3.7 |reached target block errors\n",
      "      9.0 | 2.2400e-03 | 1.7069e-02 |      216089 |    96468992 |          201 |       11776 |         3.9 |reached target block errors\n",
      "     10.0 | 1.9791e-03 | 1.4685e-02 |      224125 |   113246208 |          203 |       13824 |         4.6 |reached target block errors\n"
     ]
    }
   ],
   "source": [
    "PUSCH_SIMS = {\n",
    "    \"scenario\" : [\"umi\"],\n",
    "    \"domain\" : [\"freq\"],\n",
    "    \"perfect_csi\" : [True, False],\n",
    "    \"detector\" : [\"kbest\", \"lmmse\"],\n",
    "    \"ebno_db\" : list(range(-2,11)),\n",
    "    \"speed\" : 3.0,\n",
    "    \"batch_size_freq\" : 128,\n",
    "    \"batch_size_time\" : 28, # Reduced batch size from time-domain modeling\n",
    "    \"bler\" : [],\n",
    "    \"ber\" : []\n",
    "    }\n",
    "\n",
    "start = time.time()\n",
    "\n",
    "for scenario in PUSCH_SIMS[\"scenario\"]:\n",
    "    for domain in PUSCH_SIMS[\"domain\"]:\n",
    "        for perfect_csi in PUSCH_SIMS[\"perfect_csi\"]:\n",
    "            batch_size = PUSCH_SIMS[\"batch_size_freq\"] if domain==\"freq\" else PUSCH_SIMS[\"batch_size_time\"]\n",
    "            for detector in PUSCH_SIMS[\"detector\"]:\n",
    "                model = Model(scenario, perfect_csi, domain, detector, PUSCH_SIMS[\"speed\"])\n",
    "                ber, bler = sim_ber(model,\n",
    "                            PUSCH_SIMS[\"ebno_db\"],\n",
    "                            batch_size=batch_size,\n",
    "                            max_mc_iter=1000,\n",
    "                            num_target_block_errors=200)\n",
    "                PUSCH_SIMS[\"ber\"].append(list(ber.numpy()))\n",
    "                PUSCH_SIMS[\"bler\"].append(list(bler.numpy()))\n",
    "\n",
    "PUSCH_SIMS[\"duration\"] = time.time() - start"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "c247baed",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-03-09T00:53:26.125295Z",
     "iopub.status.busy": "2025-03-09T00:53:26.124972Z",
     "iopub.status.idle": "2025-03-09T00:53:26.623367Z",
     "shell.execute_reply": "2025-03-09T00:53:26.622696Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Simulation duration: 1.12 [h]\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Uncomment to show precomputed results\n",
    "#PUSCH_SIMS = eval(\"{'scenario': ['umi'], 'domain': ['freq'], 'perfect_csi': [True, False], 'detector': ['kbest', 'lmmse'], 'ebno_db': [-2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 'speed': 3.0, 'batch_size_freq': 128, 'batch_size_time': 28, 'bler': [[0.865234375, 0.525390625, 0.236328125, 0.0703125, 0.022894965277777776, 0.0081787109375, 0.0031916920731707315, 0.0011800130208333333, 0.0007274208566108007, 0.000298828125, 0.000189453125, 0.000107421875, 4.6875e-05], [0.501953125, 0.2412109375, 0.13411458333333334, 0.06556919642857142, 0.037109375, 0.021073190789473683, 0.012251420454545454, 0.007244318181818182, 0.0038869121287128713, 0.0027646346830985913, 0.0015751008064516128, 0.0009838684538653367, 0.0007239105504587156], [0.994140625, 0.97265625, 0.849609375, 0.513671875, 0.234375, 0.115234375, 0.05126953125, 0.028878348214285716, 0.023092830882352942, 0.018694196428571428, 0.013671875, 0.012451171875, 0.013739224137931034], [0.919921875, 0.724609375, 0.533203125, 0.2802734375, 0.16536458333333334, 0.08984375, 0.056919642857142856, 0.043619791666666664, 0.035006009615384616, 0.02055921052631579, 0.017578125, 0.018465909090909092, 0.01532451923076923]], 'ber': [[0.08414149284362793, 0.03808903694152832, 0.013622879981994629, 0.00516200065612793, 0.0018940899107191297, 0.0006881306568781534, 0.0002859627328267912, 0.00012890001138051352, 9.374645169220823e-05, 3.3643484115600584e-05, 2.6883602142333983e-05, 1.2900114059448242e-05, 6.676435470581055e-06], [0.032366275787353516, 0.015960693359375, 0.009874105453491211, 0.004354306629725865, 0.00270201943137429, 0.0015692459909539473, 0.0008932893926447088, 0.0005442922765558416, 0.0002903820264457476, 0.00021878598441540356, 0.00013986518306116904, 7.878217911185171e-05, 6.43913898992976e-05], [0.15517663955688477, 0.12702298164367676, 0.08907222747802734, 0.036322832107543945, 0.015564680099487305, 0.008847415447235107, 0.005330264568328857, 0.003527675356183733, 0.0029088469112620633, 0.0025938579014369418, 0.002038750155218716, 0.0017822608351707458, 0.001927071604235419], [0.10343790054321289, 0.06611466407775879, 0.043680429458618164, 0.0217667818069458, 0.013199090957641602, 0.007306861877441406, 0.005208117621285575, 0.004094309277004666, 0.003994941711425781, 0.002383282310084293, 0.0023060985233472743, 0.002356225794011896, 0.002158962763272799]], 'duration': 4399.180883407593}\")\n",
    "print(\"Simulation duration: {:1.2f} [h]\".format(PUSCH_SIMS[\"duration\"]/3600))\n",
    "\n",
    "plt.figure()\n",
    "plt.title(\"5G NR PUSCH over UMi Channel Model (8x16)\")\n",
    "plt.xlabel(\"SNR (dB)\")\n",
    "plt.ylabel(\"BLER\")\n",
    "plt.grid(which=\"both\")\n",
    "plt.xlim([PUSCH_SIMS[\"ebno_db\"][0], PUSCH_SIMS[\"ebno_db\"][-1]])\n",
    "plt.ylim([1e-5, 1.0])\n",
    "\n",
    "i = 0\n",
    "legend = []\n",
    "for scenario in PUSCH_SIMS[\"scenario\"]:\n",
    "    for domain in PUSCH_SIMS[\"domain\"]:\n",
    "        for perfect_csi in PUSCH_SIMS[\"perfect_csi\"]:\n",
    "            for detector in PUSCH_SIMS[\"detector\"]:\n",
    "                plt.semilogy(PUSCH_SIMS[\"ebno_db\"], PUSCH_SIMS[\"bler\"][i])\n",
    "                i += 1\n",
    "                csi = \"Perf. CSI\" if perfect_csi else \"Imperf. CSI\"\n",
    "                det = \"K-Best\" if detector==\"kbest\" else \"LMMSE\"\n",
    "                legend.append(det + \" \" + csi)\n",
    "plt.legend(legend);"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "3ad298b2",
   "metadata": {},
   "source": [
    "Hopefully you have enjoyed this tutorial on Sionna's 5G NR PUSCH module!\n",
    "\n",
    "Please have a look at the [API documentation](https://nvlabs.github.io/sionna/phy/api/phy.html) of the various components or the other available [tutorials](https://nvlabs.github.io/sionna/phy/tutorials.html) to learn more."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.16"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
